У меня есть два набора данных, которые отформатированы так:
df1
#> Artist Album Year
#> 1 Beatles Sgt. Pepper's 1967
#> 2 Rolling Stones Sticky Fingers 1971
и
df2
#> Album Year Producer
#> 1 Sgt. Pepper's 1966 George Martin
#> 2 Sticky Fingers 1971 Jimmy Miller
Я бы хотел сделать inner_join
по альбомам и годам, но иногда поле 'Год' отключено на один год: например, сержант. Перец числится как 1967 в df1, в 1966 году в df2.
Так что, если я бегу:
df3 <- inner_join(df1, df2, by = c("Album", "Year"))
Я получаю:
df3
#> Artist Album Year Producer
#> 1 Rolling Stones Sticky Fingers 1971 Jimmy Miller
Принимая во внимание, что я хотел бы присоединиться к обоим альбомам, пока что-то вроде (df1$Year == df2$Year + 1)|(df1$Year == df2$Year - 1)
.
Я не могу просто присоединиться к альбому, потому что в моем реальном наборе данных есть несколько альбомов с одинаковым названием «Год».
Код для наборов данных ниже:
df1 <- data.frame(stringsAsFactors=FALSE,
Artist = c("Beatles", "Rolling Stones"),
Album = c("Sgt. Pepper's", "Sticky Fingers"),
Year = c(1967, 1971)
)
df1
df2 <- data.frame(stringsAsFactors=FALSE,
Album = c("Sgt. Pepper's", "Sticky Fingers"),
Year = c(1966, 1971),
Producer = c("George Martin", "Jimmy Miller")
)
df2