计算字符串出现在组列中的次数

时间:2019-10-02 22:21:09

标签: r

我有一个类似以下的数据集,其中b列是一个因素:

df<-data.frame(a=c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4), b=c('aa', 'aa', 'bb', 'aa', 'bb', 'cc', 'aa', 'aa', 'aa', 'aa', 'aa', 'cc'))

我想要一个列c,该列计算“ 1”,“ 2”,“ 3”或“ 4”具有“ aa”的次数,所以类似:

enter image description here

3 个答案:

答案 0 :(得分:1)

library(dplyr)
df %>%
    group_by(a) %>%
    mutate(c = sum(b == "aa")) %>%
    ungroup()

以R为底

transform(df, c = ave(+(b == "aa"), a, FUN = sum))

答案 1 :(得分:0)

这是一个data.table解决方案,适用于ab中所有级别的组合。实际上,您的想法是将ab列分组(因此为什么它们位于方括号的第三个参数中),然后分配该组合中的行数({{1 }})到您的新列(.N)。

c

reprex package(v0.3.0)于2019-10-02创建

答案 2 :(得分:0)

带有base R的另一个rowsum选项

df$c <- with(df, rowsum(+(b == "aa"), a)[,1][as.character(a)])