首页 > 解决方案 > R - 基于共享相似列但长度不同的另一个 data.frame 将列添加到第一个 data.frame

问题描述

我有一个第一个 data.frame d1,其中包含每个生物体的 2 个数字(A 和 B)。

Organism1 <- c("name1", "name3", "name5") 
Number1 <- c("numberA1", "numberA3", "numberA5") 
Number2 <- c("numberB1", "numberB3", "numberB5") 
d1 <- data.frame(Organism1, Number1, Number2)
d1

我有第二个 data.frame d2,其中包含每个生物体的状态

Organism2 = c("name1", "name2", "name3", "name4", "name5", "name6")
Status = c("Bad", "Good", "Neutral", "Good", "Good", "Bad")
d2 = data.frame(Organism2, Status)
d2

我想“合并”这两个 data.frame 以获得第三个d3对应于d1+Status列的

Organism3 = c("name1", "name3", "name5") 
Number1 = c("numberA1", "numberA3", "numberA5") 
Number2 = c("numberB1", "numberB3", "numberB5") 
Status3 = c("Bad", "Neutral", "Good")
d3 = data.frame(Organism1, Number1, Number2, Status3) 
d3

这个想法只是将状态列添加到d1. 对于每一个d1不被d2放入NA的有机体d3

我查看了该merge功能,但没有成功获得我想要的东西。

标签: rdataframejoinmerge

解决方案


使用merge您获得此输出:

merge(d1,d2,by.x="Organism1",by.y="Organism2", all.x=T)
  Organism1  Number1  Number2  Status
1     name1 numberA1 numberB1     Bad
2     name3 numberA3 numberB3 Neutral
3     name5 numberA5 numberB5    Good

但是在你想要的输出中d3你有不同的值Status,你的逻辑是什么?


推荐阅读