计算数据帧中多列中字符串的出现

时间:2019-07-04 16:23:43

标签: r

我有以下数据框,我想计算每行中单词“ High”的出现,并在数据框的另一列附加“ countHigh”

     a    b    c
1 High High High
2 High  Low High
3  Low  Low High

所以我应该得到一个计数向量(3,2,1)。

我已经尝试了apply()和stringr:str_count,如下所示:

> apply(test.df[,1:3],1,str_count,"High" )

    [,1] [,2] [,3]
[1,]    1    1    0
[2,]    1    0    0
[3,]    1    1    1

并且我两次使用了apply()函数:

> apply(apply(test.df[,1:3],1,str_count,"High" ),2,sum)
[1] 3 2 1

是否有更好的方法来做到这一点,特别是只使用一次apply()并使用grep()或which()吗?

谢谢

1 个答案:

答案 0 :(得分:4)

如果它是固定字符串,则使用==创建一个逻辑矩阵,并从rowSums中获得base R(应该比apply快)

test.df$countHigh <- rowSums(test.df == "High")