#r #dataframe #merge
Вопрос:
У меня есть 2 кадра данных:
df1: word1 previousWord a na b a c b
другой фрейм данных выглядит следующим образом
df2: this contains more pairs than exist in df1. It contains every combo possible word1 previousWord Score a a 1 a b .5 a c .9 b a .5 b b 1 b c .2 c a .9 c b .2 c c 1
Я хочу найти, когда пары из df1(т. Е. b-a, c-b) в df2, скопировать оценку из df2 и добавить ее в новый столбец в df1.
Например, результат будет выглядеть следующим образом:
word1 previousWord Score a na na b a .5 c b .2
Это то, что я пробовал, однако похоже, что он удалил много моих данных из df1. Изменение порядка не устранило эту проблему.
df3lt;-merge(df2, df1, by = c("word1", "previousWord"))
Мы очень ценим любую помощь.
Ответ №1:
Вы можете использовать left_join()
dplyr
его отсюда.
library(dplyr) df3lt;- left_join(df1, df2, by = c("word1", "previousWord"))
Выход
word1 previousWord Score 1 a lt;NAgt; NA 2 b a 0.5 3 c b 0.2
Данные
df1 lt;- structure(list(word1 = c("a", "b", "c"), previousWord = c(NA, "a", "b")), class = "data.frame", row.names = c(NA, -3L)) df2 lt;- structure(list(word1 = c("a", "a", "a", "b", "b", "b", "c", "c", "c"), previousWord = c("a", "b", "c", "a", "b", "c", "a", "b", "c"), Score = c(1, 0.5, 0.9, 0.5, 1, 0.2, 0.9, 0.2, 1)), class = "data.frame", row.names = c(NA, -9L))