所以我想计算一个列的不同值。这是数据帧:

asa
----
aa
bb
aa
aa
bb
cc
dd


想要得到:

asa |  n
--------
aa  |  3
bb  |  2
cc  |  1
dd  |  1


我尝试从Counting unique / distinct values by group in a data frame使用ddply并执行以下代码:(可重现)

asa<-c("aa","bb","aa","aa","bb","cc","dd")
asad<-data.frame(asa)
ddply(asad,~asa,summarise,n=length(unique(asa)))


但是我得到了:

  asa n
1  aa 1
2  bb 1
3  cc 1
4  dd 1


它没有做计算。请注意,列中的值可以随时添加。因此它并不总是“ aa”,“ bb”,“ cc”和“ dd”。也可以用空格或逗号分隔(“ aa bb”,“ aa,bb”或“ aa,bb”)。必须有一种方法。先感谢您

最佳答案

我们可以使用table

setNames(as.data.frame(table(df1$asa)), c("asa", "n"))
#   asa    n
#1   aa    3
#2   bb    2
#3   cc    1
#4   dd    1




或使用tally中的dplyr

library(dplyr)
df1 %>%
     group_by(asa) %>%
     tally()
#    asa     n
#   (chr) (int)
#1    aa     3
#2    bb     2
#3    cc     1
#4    dd     1

10-08 04:18