2 ответов:
смотрите документацию по
?merge, в которой говорится:By default the data frames are merged on the columns with names they both have, but separate specifications of the columns can be given by by.x and by.y.это явно означает, что
mergeбудет объединять фреймы данных на основе более чем одного столбца. Из последнего примера, приведенного в документации:x <- data.frame(k1=c(NA,NA,3,4,5), k2=c(1,NA,NA,4,5), data=1:5) y <- data.frame(k1=c(NA,2,NA,4,5), k2=c(NA,NA,3,4,5), data=1:5) merge(x, y, by=c("k1","k2")) # NA's matchэтот пример должен был продемонстрировать использование
incomparables, но он также иллюстрирует слияние с использованием нескольких столбцов. Вы также можете указать отдельные столбцы в каждом изxиyиспользуяby.xиby.y.
надеюсь, это поможет;
df1 = data.frame(CustomerId=c(1:10), Hobby = c(rep("sing", 4), rep("pingpong", 3), rep("hiking", 3)), Product=c(rep("Toaster",3),rep("Phone", 2), rep("Radio",3), rep("Stereo", 2))) df2 = data.frame(CustomerId=c(2,4,6, 8, 10),State=c(rep("Alabama",2),rep("Ohio",1), rep("Cal", 2)), like=c("sing", 'hiking', "pingpong", 'hiking', "sing")) df3 = merge(df1, df2, by.x=c("CustomerId", "Hobby"), by.y=c("CustomerId", "like"))предполагая, что
df1$Hobbyиdf2$likeозначает то же самое.
Comments