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

时间:2019-05-21 12:00:54

标签: r match extract

我在解决这个问题上有些麻烦。基本上,我想基于2个不同数据帧的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

我想将其与此ID相匹配:

View(supplierdata)

  Id     MakeText
  1.0    Mercedes
  1.0    Mercedes
  1001.0 Ferrari
  1001.0 Ferrari
  1003.0 Audi

并提取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

我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

使用interface vscode { postMessage(message: any): void; } declare const vscode: vscode; const addCategory = () => () => vscode.postMessage({ command: 'add-category' }); 软件包:

dplyr

您正在寻找什么?

答案 1 :(得分:0)

我相信您正在寻找left_join

library(dplyr)

left_join(wb, suplierdata)