我有以下数据框,我想计算每行中单词“ 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()吗?
谢谢
答案 0 :(得分:4)
如果它是固定字符串,则使用==
创建一个逻辑矩阵,并从rowSums
中获得base R
(应该比apply
快)
test.df$countHigh <- rowSums(test.df == "High")