我有以下数据框,我想为每一行计算单词“High”的出现次数,并将“countHigh”作为另一列附加到数据框
a b c
1 High High High
2 High Low High
3 Low Low High
Run Code Online (Sandbox Code Playgroud)
所以我应该得到一个计数向量(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
Run Code Online (Sandbox Code Playgroud)
我两次使用了 apply() 函数:
> apply(apply(test.df[,1:3],1,str_count,"High" ),2,sum)
[1] 3 2 1
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点,特别是只使用一次 apply() 并使用 grep() 或 which() ?
谢谢
如果它是一个固定字符串,则创建一个逻辑矩阵==并获取rowSumsfrom base R(与 相比应该快apply)
test.df$countHigh <- rowSums(test.df == "High")
Run Code Online (Sandbox Code Playgroud)