Объединить два кадра данных с повторяющимися значениями - PullRequest
0 голосов
/ 30 сентября 2018

Вот два кадра данных.Как можно использовать te второго продукта для объединения двух данных, но первый содержит больше строк, и в некоторых из них должен быть текстовый столбец NA

dframe1 = data.frame(sample = c("text1", "text2", "text3", "text4", "text5", "text6", "text7", "text8", "text9", "text10"), 
                     productid = c(33, 5, 33, 34, 12, 54, 22, 9, 45, 22),
                     manifucturerid = c(1, 1, 2, 2, 3, 4, 5, 6, 7, 7))
dframe2 = data.frame(productid = c(33, 33, 34, 54, 22, 45, 22), 
                     text = c("a,b", "a,b", "c,d", "e,f,g", "h,i,j,k", "l,m", "h,i,j,k"))

Пример ожидаемого вывода

dframe = data.frame(sample = c("text1", "text2", "text3", "text4", "text5", "text6", "text7", "text8", "text9", "text10"), productid = c(33, 5, 33, 34, 12, 54, 22, 9, 45, 22), 
                    manifucturerid = c(1, 1, 2, 2, 3, 4, 5, 6, 7, 7), 
                    text = c("a,b", "NA", "a,b", "c,d", "NA", "e,f,g", "h,i,j,k", "NA", "l,m", "h,i,j,k"))

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете использовать dplyr::left_join() by productid.При левом соединении сохраняются все строки dframe1 и добавляется текст в новый столбец, когда идентификаторы продуктов совпадают.

library(dplyr)
dframe <- left_join(dframe1, dframe2, by = "productid")

#    sample productid manifucturerid    text
# 1   text1        33              1     a,b
# 2   text2         5              1      NA
# 3   text3        33              2     a,b
# 4   text4        34              2     c,d
# 5   text5        12              3      NA
# 6   text6        54              4   e,f,g
# 7   text7        22              5 h,i,j,k
# 8   text8         9              6      NA
# 9   text9        45              7     l,m
# 10 text10        22              7 h,i,j,k
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...