我有两个格式如下的数据集:
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
按专辑和年份,但有时“年份”字段会关闭一年:例如,中士。Peppers 在 df1 中被列为 1967 年,在 df2 中被列为 1966 年。
所以如果我运行:
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