我有一个由逗号分隔的字符串序列组成的数据框。例如:
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
Run Code Online (Sandbox Code Playgroud)
我有另一个数据框,其中每个字符串对应于数值。例如:
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
Run Code Online (Sandbox Code Playgroud)
我想根据第二个数据帧中的值计算第一个数据帧中每个模式的总和。例如:
patterns sum
1 CCDC127, HSF1, NDUFB9 33
2 CCDC127, EXOC3, YIF1A 37
3 EXOC3, NDUFB9, YIF1A 39
Run Code Online (Sandbox Code Playgroud)
我将不胜感激任何指导并帮助解决这个问题。
谢谢你!奥尔哈
您可以将strsplitandsapply与 一起使用match:
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
Run Code Online (Sandbox Code Playgroud)