所以我想计算一个列的不同值。这是数据帧:
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