如何一次性将R dataframe中指定列与其余多列的值进行批量拼接?
R DataFrame单列与多列批量拼接实现方法
以下是两种常用的实现方案:
方法1:基础R实现
无需加载额外依赖,适合轻量使用场景:
- 仅修改指定列(示例中为b、c列):
asd <- data.frame(a = c("A","B"), b = c("d","f"), c = c("x","y")) # 选中需要拼接的列,批量执行a列+当前列的拼接操作 asd[, c("b", "c")] <- lapply(asd[, c("b", "c")], function(x) paste0(asd$a, x))
- 自动匹配除a列外所有列进行拼接,不需要手动罗列列名:
target_cols <- setdiff(names(asd), "a") asd[, target_cols] <- lapply(asd[, target_cols], function(x) paste0(asd$a, x))
方法2:dplyr(tidyverse生态)实现
语法更简洁易读,适合已经在使用tidyverse工具链的场景:
library(dplyr) asd <- asd %>% # across参数1指定要处理的列,这里写-a就是排除a列,处理其余所有列 mutate(across(-a, ~paste0(a, .x)))
如果只需要处理指定的b、c列,把-a替换成c(b,c)即可。
运行以上任意一种方案后,输出asd即可得到预期结果:
a b c 1 A Ad Ax 2 B Bf By
内容的提问来源于stack exchange,提问作者user11740857
相关产品推荐
相关产品推荐

