一个简单的可重现案例,给出了我不理解的错误消息:
a <- data.frame(this_year = c(1, 2, 3, 4), following_year = c(2, 3, 4, 5))
b <- data.frame(year = c(2, 3, 4, 5), date = as.Date(c("1990-01-01", "1991-01-01", "1992-01-01", "1993-01-01")))
z <- a %>% left_join(b, by = "following_year = year")
给出错误:
错误:
by
不能包含连接列following_year = year
,即 LHS中缺少
任何人都可以解释问题是什么吗?
还...可以通过运行类似的东西来简化
z <- a %>% left_join(b, by = "(this_year + 1) = year")
即要对by =“”部分中的表达式求值吗?
谢谢。
答案 0 :(得分:3)
正确的表达式是在连接函数(=
)中用c
分隔的每个列名都用引号引起来。如果我们将整体作为字符串传递,则不会根据?left_join
by-要在x和y上通过不同的变量联接,请使用命名向量。例如,by = c(“ a” =“ b”)将x.a与y.b匹配。
library(dplyr)
a %>%
left_join(b, by = c("following_year" = "year"))