Как извлечь значения из столбца данных, основываясь на совпадении двух столбцов идентификаторов разных кадров? - PullRequest
1 голос
/ 21 мая 2019

У меня небольшие проблемы с этим. По сути, я хочу извлечь значения из столбца MakeText, основываясь на первом совпадении идентификатора 2 разных фреймов данных. Один фрейм данных имеет только уникальные идентификаторы, тогда как другой фрейм данных имеет несколько строк с одним и тем же идентификатором, отсюда и условие для первого вхождения. Каждый уникальный идентификатор имеет уникальные значения для столбца MakeText.

Я попытался сопоставить и объединить в r, но я не представляю, как извлечь значения столбца в случае этого из-за различного количества строк в данных.

На основании идентификатора этого:

 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

Я хочу сопоставить его с идентификатором этого:

View(supplierdata)

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

и извлеките значения столбца MakeText, чтобы объединить его с фреймом данных 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 ]

2 голосов
/ 21 мая 2019

Использование пакета dplyr:

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

Это то, что вы ищете?

1 голос
/ 21 мая 2019

Я полагаю, вы ищете left_join.

library(dplyr)

left_join(wb, suplierdata)
...