我正在尝试构建一个能够处理各种输入类型的管道。我将_join保留给了一个主表,该表***可能***具有相同的列名。dplyr会在连接表中将匹配的列名追加为.x和.y。我希望重命名源自主表的列(.y)到它的原始名称。管道必须为input1和input2工作(作为独立的输入)。目前我的重命名步骤抛出和错误。我也尝试了mutate(),但给出了类似的错误。
> names(input1.df)
[1] "A"
> names(input2.df)
[1] "A" "B"
>names(MasterTable.df)
[1] "A" "B" "C" "D" "E"
joined.df <- input2.df %>%
dplyr::left_join(MasterTable.df, by=("A")) %>%
dplyr::rename(B = ifelse(B.y %in% names(.)) B.y, B) %>%
dplyr::select(A, B) %>%
dplyr::mutate(New_Column = ifelse(is.na(B), A, B))
2条答案
按热度按时间sqxo8psd1#
您可以使用
rename_with(.fn=)
:如果需要,您可以
select(-ends_with(".x"))
。~
-func有点幼稚,因为它不检查非.y
列是否已经存在,但在您的情况下,这似乎不是一个因素。不过,也许还有一种不同的方法,那就是在连接时更改后缀:
fhity93d2#
如果没有数据集和输出示例,我不确定我是否理解它,但我会给予一下:
为什么不在左连接后重命名.y或.x列?