在给定另一列的值的情况下,如何计算某列中某物的实例?

时间:2018-10-03 22:21:26

标签: r

我基本上有一个这样的数据框:

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

我该怎么做?

2 个答案:

答案 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

的基本R替代
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)))))