R 如何基于不同数据帧的两个ID列的匹配从数据帧列中提取值?

R 如何基于不同数据帧的两个ID列的匹配从数据帧列中提取值?,r,match,extract,R,Match,Extract,我在这方面有点困难。基本上,我希望根据两个不同数据帧的id匹配的第一次出现,从列MakeText中提取值。一个数据帧只有唯一的ID,而另一个数据帧有多行相同的ID,因此第一次出现的子句。每个唯一ID都具有MakeText列的唯一值 我尝试在r中进行匹配和合并,但由于数据帧的行数不同,我不知道在这种情况下如何提取列值 根据此文件的id: wb <- spread(data = newdata, key = an, value = av)

我在这方面有点困难。基本上,我希望根据两个不同数据帧的id匹配的第一次出现,从列MakeText中提取值。一个数据帧只有唯一的ID,而另一个数据帧有多行相同的ID,因此第一次出现的子句。每个唯一ID都具有MakeText列的唯一值

我尝试在r中进行匹配和合并,但由于数据帧的行数不同,我不知道在这种情况下如何提取列值

根据此文件的id:

 wb <- spread(data = newdata, 
             key = an,
             value = av)

 names(wb)[1] <- "ID"

 wb <- as.data.frame(wb)
 View(wb)

  Id     BodyColorText
  1.0    blue
  100.0  cyan
  1001.0 red
  1003.0 black
并提取MakeText列值,将其连接到与该ID相关的wb数据帧

由于行数不相等-wb有1103行,而supplierdata有20957行-我发现很难做到这一点

我要寻找的最终输出是“wb”数据帧,看起来像:

  Id     BodyColorText MakeText
  1.0    blue          Mercedes
  100.0  cyan          Porsch
  1001.0 red           Ferrari
  1003.0 black         Audi

非常感谢您的帮助。

使用
dplyr
软件包:

inner_join(wb, distinct(supplierdata), by = 'Id') 

这就是你要找的吗

我相信您正在寻找
左加入

library(dplyr)

left_join(wb, suplierdata)

欢迎来到SO!两件事。帮助我们以可复制的格式发布您的数据(发布
dput(head(YOURDATA))的输出)
。其次,你的最终输出应该是什么样子的?你想要每个id一行吗?@BenG谢谢!问题是我之前试过发布,但太长了,无法让这个问题看起来合理和易于理解。我已经添加了我的最终输出应该是什么样子的。试试
dput(head(YOURDATA,10))
如果很长,请不要担心。谢谢,但这不是我想要的。我在上面的问题中添加了一个编辑,以显示最终输出应该是什么样子!但是这确实引导了我走向正确的方向。是的,这非常有效。我只是在这之后删除了重复的行。非常感谢!
library(dplyr)

left_join(wb, suplierdata)