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