如何添加另一个逗号分隔的chr列的总和列?

时间:2016-10-09 03:30:35

标签: r

鉴于此数据框:

> seq <- as.character(c("1, 2, 3", "4, 5", NA, "6"))
> my.df <- data.frame(seq, stringsAsFactors = FALSE)
> str(my.df)
'data.frame':   4 obs. of  1 variable:
 $ seq: chr  "1, 2, 3" "4, 5" NA "6"
> my.df
      seq
1 1, 2, 3
2    4, 5
3    <NA>
4       6

如何编写代码来添加第一列的总和?

      seq my.sum
1 1, 2, 3      6
2    4, 5      9
3    <NA>     NA
4       6      6
> str(my.df)
'data.frame':   4 obs. of  2 variables:
 $ seq   : chr  "1, 2, 3" "4, 5" NA "6"
 $ my.sum: num  6 9 NA 6

1 个答案:

答案 0 :(得分:1)

这是一个基本的R解决方案,我们可以strsplit()seq列添加到字符向量列表中,然后使用sapply()对列表中的每个向量求和:

my.df$my.sum <- sapply(strsplit(my.df$seq, ", "), function(x) sum(as.numeric(x)))

my.df
#      seq my.sum
#1 1, 2, 3      6
#2    4, 5      9
#3    <NA>     NA
#4       6      6