繁体   English   中英

使用 dplyr 按行计算特殊字符的数量并变异为新列

[英]Using dplyr count number of special characters rowwise and mutate into a new column

一个示例数据框:

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") )

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

我们可以在,使用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删除不是a ,的字符,用nchar获取字符数并加1

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

另一个基本 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM