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

Скажем, у меня есть два кадра данных, df1 и df2, которые выглядят так:

student     x    y    teacher   value
s.name1     4    5    t.name1   1
s.name2     3    3    t.name1   2
s.name2     2    1    t.name2   3
s.name3     5    5    t.name3   1

и я хотел бы объединить эти два кадра данных на основе содержимого df $ student, df $ x,df $ y и df $ teacher - то же самое, но НЕ значение df $.Каков наилучший подход для этого?Спасибо.

Редактировать: разобрался с помощью merge (), опубликовал решение.

Ответы [ 3 ]

0 голосов
/ 28 ноября 2018

Разобрался:

merged.df <- merge(df1, df2 ,by=c("student", "teacher", "x", "y"))
0 голосов
/ 28 ноября 2018

Это зависит от того, чего именно вы хотите достичь.

Пример

df1 <- data.frame(student = c("A", "B", "C"), teacher = c("Mike", "Leslie", "David"), score = c(80, 90, 100))

df2 <- data.frame(student = c("A", "B", "D", "E", "F"), score = c(100, 80, 90, 100, 75), teacher = c("Mike", "Leslie", "Mike", "Leslie", "Bill"))

data <- full_join(df1, df2, by = c("student", "teacher"))

Существует множество способов достижения разных результатов.Вы можете попробовать merge() тоже.

Страница для консультации https://rpubs.com/williamsurles/293454

0 голосов
/ 28 ноября 2018

Самый простой способ - использовать rbind.На этот вопрос ответили Самый простой способ заставить rbind игнорировать имена столбцов .Просто используйте

rbind(db1, setNames(rev(db2), names(db1)))

В случае, если имена разные.

...