【问题标题】:Counting occurrences of a string in multiple columns of a data frame [duplicate]计算数据框多列中字符串的出现次数[重复]
【发布时间】:2019-07-05 02:21:54
【问题描述】:

我有以下数据框,我想计算每行出现“高”一词的次数,并将“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() ?

谢谢

【问题讨论】:

    标签: r


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 2021-08-02
      • 2011-03-02
      • 2019-06-03
      • 2012-08-11
      相关资源
      最近更新 更多