Tôi có một tập dữ liệu dài với một hàng cho mỗi nhóm được nhóm với các trường. Mỗi hàng có một yếu tố đặt hàng {1, 2, 3, 4}, "mèo". Tôi muốn lấy tỷ lệ phần trăm của 1, 2, 3 và 4 trong mỗi trường. Bộ dữ liệu trông như thế này:dplyr: Đếm/Tỷ lệ phần trăm của nhóm được phân loại theo trường không được nhóm
school_number cats
1 10505 3
2 10505 3
3 10502 1
4 10502 1
5 10502 2
6 10502 1
7 10502 1
8 10502 2
10 10503 3
11 10505 2
tôi đã cố gắng một cái gì đó như thế này:
df_pcts <- df %>%
group_by(school_number) %>%
mutate(total=sum(table(cats))) %>%
summarize(cat_pct = table(cats)/total)
nhưng tổng biến sản xuất bởi bước đột biến() đặt tổng số lớn của các hàng trong mỗi hàng. Tôi thậm chí không thể đến bước tóm tắt cuối cùng. Tôi bối rối.
P.S. Trong một số bài viết khác tôi thấy dòng như thế này:
n = n()
khi tôi làm điều đó tôi nhận được một thông báo nói,
Error in n() : This function should not be called directly
đâu này đến từ đâu?
TIA
gì đầu ra nào bạn cần? các cột riêng biệt cho 1,2,3 mèo hoặc các hàng riêng biệt cho mỗi tổ hợp trường học/mèo? – jalapic
Bạn cũng có thể sử dụng 'df%>% group_by (số học, mèo)%>% tóm tắt (n = n())%>% biến đổi (pct = 100 * n/sum (n))' – akrun
Bạn có thể gõ chỉ ' mutate' vào phiên của bạn, và xác nhận xem dòng cuối cùng của đầu ra có phải là '' không? Nếu đầu ra thay vào đó '', thì đó chính xác là vấn đề: bằng cách nào đó plyr được tải sau khi dplyr được nạp (và biến đổi của plyr không chú ý đến group_by). Đây là một nguyên nhân phổ biến (mặc dù không phải là duy nhất) của "group_by không làm việc" vấn đề. –