首页 > 解决方案 > 根据字符串 ID 对值求和

问题描述

我有一个由逗号分隔的字符串序列组成的数据框。例如:

df <- data.frame(patterns = c("CCDC127, HSF1, NDUFB9", "CCDC127, EXOC3, YIF1A", "EXOC3, NDUFB9, YIF1A"))
df
               patterns
1 CCDC127, HSF1, NDUFB9
2 CCDC127, EXOC3, YIF1A
3  EXOC3, NDUFB9, YIF1A

我有另一个数据框,其中每个字符串对应于数值。例如:

df2 <- data.frame(strings = c("CCDC127", "HSF1", "NDUFB9", "EXOC3", "YIF1A"),
                   scores = c(10, 11, 12, 13, 14))
df2
  strings scores
1 CCDC127     10
2    HSF1     11
3  NDUFB9     12
4   EXOC3     13
5   YIF1A     14

我想根据第二个数据帧中的值计算第一个数据帧中每个模式的总和。例如:

patterns sum
1 CCDC127, HSF1, NDUFB9  33
2 CCDC127, EXOC3, YIF1A  37
3  EXOC3, NDUFB9, YIF1A  39

对于这个问题,我将不胜感激任何指示和帮助。

谢谢!奥尔哈

标签: rstringsum

解决方案


您可以使用strsplitand :sapplymatch

df$sum <- sapply(strsplit(df$patterns, ", "), 
                 function(x) sum(df2$scores[match(x, df2$strings)]))
df
#>                patterns sum
#> 1 CCDC127, HSF1, NDUFB9  33
#> 2 CCDC127, EXOC3, YIF1A  37
#> 3  EXOC3, NDUFB9, YIF1A  39

推荐阅读