r - 根据先前的列 r 向数据框添加相同的列
问题描述
我通过一个公共键列(第一列)将两个数据框合并在一起,但是我想根据前一列的第二列再次添加同一列:
代码片段
clusering_matrix_example <- data.frame(BGC = c("BGC1", "BGC2", "BGC3", "BGC4"), Family = c("10","20","30","40"))
network_matrix_example <- data.frame(BGC1 = c("BGC1", "BGC1", "BGC1", "BGC2", "BGC2", "BGC2", "BGC3", "BGC3", "BGC3", "BGC4", "BGC4", "BGC4"),
BGC2 = c("BGC2", "BGC3", "BGC4", "BGC1", "BGC3", "BGC4", "BGC1", "BGC2", "BGC4", "BGC1", "BGC2", "BGC3"),
score = c(1,2,3,1,4,5,2,4,6,3,5,6))
network_output_example <- merge(network_matrix_example, clusering_matrix_example, by.x= "BGC1", by.y = "BGC")
network_output_example <- merge(network_matrix_example, clusering_matrix_example, by.x= "BGC2", by.y = "BGC")
电流输出
BGC1 | BGC2 | score |Family
BGC1 BGC2 1 10
BGC1 BGC3 2 10
BGC1 BGC4 3 10
BGC2 BGC1 1 20
BGC2 BGC3 4 20
BGC2 BGC4 5 20
BGC3 BGC1 2 30
BGC3 BGC2 4 30
BGC3 BGC4 6 30
BGC4 BGC1 3 40
BGC4 BGC2 5 40
BGC4 BGC3 6 40
期望的输出
BGC1 | BGC2 | score |Family1 | Family2
BGC1 BGC2 1 10 20
BGC1 BGC3 2 10 30
BGC1 BGC4 3 10 40
BGC2 BGC1 1 20 10
BGC2 BGC3 4 20 30
BGC2 BGC4 5 20 40
BGC3 BGC1 2 30 10
BGC3 BGC2 4 30 20
BGC3 BGC4 6 30 40
BGC4 BGC1 3 40 10
BGC4 BGC2 5 40 20
BGC4 BGC3 6 40 40
解决方案
缺少最后一列的原因是因为您第二次与旧框架“network_matrix_example”合并,而不是新合并的“network_output_example”。
代码应该是这样的:
clusering_matrix_example <- data.frame(BGC = c("BGC1", "BGC2", "BGC3", "BGC4"), Family = c("10","20","30","40"))
network_matrix_example <- data.frame(BGC1 = c("BGC1", "BGC1", "BGC1", "BGC2", "BGC2", "BGC2", "BGC3", "BGC3", "BGC3", "BGC4", "BGC4", "BGC4"),
BGC2 = c("BGC2", "BGC3", "BGC4", "BGC1", "BGC3", "BGC4", "BGC1", "BGC2", "BGC4", "BGC1", "BGC2", "BGC3"),
score = c(1,2,3,1,4,5,2,4,6,3,5,6))
network_output_example <- merge(network_matrix_example, clusering_matrix_example, by.x= "BGC1", by.y = "BGC")
network_output_example <- merge(network_output_example, clusering_matrix_example, by.x= "BGC2", by.y = "BGC")
推荐阅读
- json - 我如何加入 2 个以上的 postgres 表并在 postgres 中将结果作为nestedjson
- git - 当它附加到 Docker 容器时,如何在 VS Code 中使用本地 git?
- python - 连续运行 C++ 代码和 Python 代码
- chef-infra - 从厨师工作站执行时的刀列表未列出我的厨师服务器
- python - 创建一个带有等号的python对象/格式实例
- go - 在flutter and go中实现客户端服务器应用程序的问题
- java - 通知选项卡上的 Confluence Java 错误
- docker - 如何防止容器在 docker-compose 环境中被拉取
- android - 在android清单的元数据中不硬编码jwplayer的许可证密钥的替代方法是什么
- jquery - 比较 SQL DB 日期并在日期与此日期匹配时添加参考