【问题标题】:Using dplyr count number of special characters rowwise and mutate into a new column使用 dplyr 逐行计算特殊字符的数量并变异为新列
【发布时间】:2021-01-26 19:30:58
【问题描述】:

一个示例数据框:

example_df = data.frame(Gene.names = c("A", "B"),
                        Score = c("3.69,2.97,2.57,3.09,2.94",
                                  "3.99,2.27,2.89,2.89,2.00,2.52,2.09,2.83") )

我想计算“分数”列的每一行中用逗号分隔的“数字”(值)的数量,并创建一个新列,例如“计数”。我怎样才能做到这一点?我试图用谷歌搜索,但在那里没有得到太多帮助。

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    我们可以在,上使用str_count并加1

    library(stringr)
    library(dplyr)
    example_df %>% 
         mutate(Count = str_count(Score, ",") + 1)
    

    -输出

    #  Gene.names                                   Score Count
    #1          A                3.69,2.97,2.57,3.09,2.94     5
    #2          B 3.99,2.27,2.89,2.89,2.00,2.52,2.09,2.83     8
    

    或者用base Rgsub去掉不是,的字符,用nchar得到字符数加1

    nchar(gsub("[^,]+", "", example_df$Score)) + 1
    #[1] 5 8
    

    【讨论】:

    • 这太简单了。非常感谢。
    【解决方案2】:

    另一个基本 R 选项是使用 strsplit + lengths,例如,

    transform(
      example_df,
      Count = lengths(strsplit(Score,","))
    )
    

    给了

      Gene.names                                   Score Count
    1          A                3.69,2.97,2.57,3.09,2.94     5
    2          B 3.99,2.27,2.89,2.89,2.00,2.52,2.09,2.83     8
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多