r - 根据字符串 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
对于这个问题,我将不胜感激任何指示和帮助。
谢谢!奥尔哈
解决方案
您可以使用strsplit
and :sapply
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
推荐阅读
- java - 谷歌地图 MapsView 泄露
- php - 如何在 Symfony 3.4 (PHP) 中注册 Google OAuth 包
- reporting-services - 在 SSRS Tablix 中呈现 HTML 标签
- javascript - 我们如何禁用输入类型 =“日期”中的 dd-mm-yyyy 字段,以便只接受选定的日期
- karate - 使用 karate.forEach 和 karate.set 从 json 数组中提取值的索引
- javascript - Firebase 网络将聊天存储为实时数据库中的数组
- java - 为什么eclipse不在方法参数中使用菱形运算符
- python - 将具有嵌套列表的列转换为以第一个元素作为列名的列
- java - Netflix Eureka 错误:com.netflix.discovery.shared.transport.TransportException:无法在任何已知服务器上执行请求
- javascript - 如何获得“未过滤”的数组项?