繁体   English   中英

计算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

我已经尝试使用 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

或与tallydplyr

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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM