我基本上有一个这样的数据框:
Name Value
a TRUE
a TRUE
b FALSE
a FALSE
c TRUE
但是要更长一些,我想获得a,b和c出现的次数。我还想获取a,b和c出现TRUE的时间。
基本上,我想要:
Name Count TRUEs
a 3 2
b 1 0
c 1 1
我该怎么做?
答案 0 :(得分:1)
使用dplyr
:
library(dplyr)
df %>% group_by(Name) %>% summarise(Count = n(), Trues = sum(Value == TRUE))
# A tibble: 3 x 3
Name Count Trues
<chr> <int> <int>
1 a 3 2
2 b 1 0
3 c 1 1
答案 1 :(得分:1)
使用by
do.call(rbind, by(df, df$Name, FUN = function(x)
c(Count = length(x$Value), TRUEs = sum(x$Value == TRUE))))
# Count TRUEs
#a 3 2
#b 1 0
#c 1 1
或使用tapply
do.call(rbind, with(df, tapply(Value, Name, FUN = function(x)
c(Count = length(x), TRUEs = sum(x == TRUE)))))