【发布时间】:2016-05-10 09:28:41
【问题描述】:
所以我想计算一列的不同值。这是数据框:
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(asa) -
我可以设置一个值为 aa 的 n 的变量吗?
-
嗯?把它放在像
asad <- data.frame(table(asa))这样的data.frame中,并更改名称,例如names(asad)<-c("asa", "n") -
您从其他解决方案中进行的简单复制/粘贴不起作用的原因是,在您的示例数据中,您正在计算分组所依据的同一个变量。因此,
unique(asa)产生长度为 1 的向量。您引用的帖子中的数据按名称分组,然后按另一个变量计数。因此,在您的情况下,只需删除unique()就可以了。
标签: r dataframe count plyr distinct-values