计算R中数据帧列中的不同值

时间:2016-05-10 09:28:41

标签: r dataframe count plyr distinct-values

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

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

它没有做计算。请注意,可以随时添加列中的值。所以它并不总是&#34; aa&#34;,&#34; bb&#34;,&#34; cc&#34;和&#34; dd&#34;。它也可以用空格或逗号分隔(&#34; abb&#34;,&#34; aa,bb&#34;或&#34; aa,bb&#34;)必须有办法解决这个问题。提前谢谢你

2 个答案:

答案 0 :(得分:1)

我们可以使用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

答案 1 :(得分:0)

更简单,只使用 as.data.frame 和 table 函数,不带其他参数。

as.data.frame(table(df$asa))