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

Counting distinct values in column of a data frame in R

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

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"。它也可以用 space 或逗号分隔("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

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

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