Mar*_*des 6 join r left-join dplyr
如何使用列索引来dplyr::left_join(和你的家人)?
示例(按列名称):
library(dplyr)
data1 <- data.frame(var1 = c("a", "b", "c"), var2 = c("d", "d", "f"))
data2 = data.frame(alpha = c("d", "f"), beta = c(20, 30))
left_join(data1, data2, by = c("var2" = "alpha"))
Run Code Online (Sandbox Code Playgroud)
但是,替换by = c("var2" = "alpha"))为此by = c(data1[,2] = data2[,1])错误的结果:
by必须是(命名的)字符向量、列表或自然连接的 NULL(不建议在生产代码中使用),不符合逻辑。
我需要在新函数上使用“列位置”for 循环。我该怎么做?
使用dplyr:
# rename_at changes alpha into var2 in data2
left_join(data1, rename_at(data2, 1, ~ names(data1)[2]), by = names(data1)[2])
# output
var1 var2 beta
1 a d 20
2 b d 20
3 c f 30
Run Code Online (Sandbox Code Playgroud)
使用底座R:
merge(data1, data2, by.x = 2, by.y = 1, all.x = T, all.y = F)
# output
var2 var1 beta
1 d a 20
2 d b 20
3 f c 30
Run Code Online (Sandbox Code Playgroud)