gpt4 book ai didi

r - tidyverse 按列连接两个具有动态列名的数据集

转载 作者:行者123 更新时间:2023-12-05 03:45:37 30 4
gpt4 key购买 nike

我想加入两个数据框,我需要将“by”列作为动态列传递。我试图在此处遵循此解决方案 ( How to pass column names for inner join by 2 column sets as variables with dplyr ),但仍然出现错误。

library(tidyverse)
x <- data.frame(a1 = c(1, 2, 3))
y <- data.frame(a2 = c(1, 2, 4),
new = c("a", "b", "c"))

x_name <- "a1"
y_name <- "a2"

x %>%
left_join(., y, by = setNames(c('x', 'y'), c(x_name, y_name)))

但我会得到以下错误:

Error: Join columns must be present in data.x Problem with a2.

期望的结果:

a1    new
1 a
2 b
3 NA

有什么想法吗?我尝试了多种使用 as.names、!!as.names、paste0...动态传递名称的方法

最佳答案

left_join(x, y, by = setNames(y_name, x_name))
# a1 new
# 1 1 a
# 2 2 b
# 3 3 <NA>

你的 by= 向量在做什么

setNames(c('x', 'y'), c(x_name, y_name))
# a1 a2
# "x" "y"

而你需要

c(a1 = "a2")
# a1
# "a2"
setNames(y_name, x_name)
# a1
# "a2"

关于r - tidyverse 按列连接两个具有动态列名的数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65688508/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com