You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中复制DataFrame列并置于原列右侧而非末尾?

需求说明

需要复制DataFrame中的指定列,并将复制后的列插入到原列的右侧,而非默认的末尾位置。以示例数据DF1为例,目标是复制Key列,插入到原Key列的右侧,其余列依次后移。

示例数据

# 构造示例数据框DF1
Name <- c("X_1_group1", "X_2_group1", "X_2_group2", "X_2_group1", "X1_group2")
Key <- c("test1234", "test4553", "test3341", "test2142", "test4722")
BCD12A <- c(10, 8, 5, 5, 6)
ACA1 <- c(10, 7, 5, 6, 7)
DEX2 <- c(8, 4, 5, 8, 4)
DF1 <- data.frame(Name, Key, BCD12A, ACA1, DEX2)

实现方案

方法1:基础R原生操作

通过列索引重组数据框,精准控制插入位置:

# 获取原Key列的索引位置
key_pos <- which(names(DF1) == "Key")
# 按指定顺序重组列,将Key列复制插入到原列右侧
DF1_modified <- DF1[, c(1:key_pos, key_pos, (key_pos+1):ncol(DF1))]
# 给复制后的列重命名(可选操作)
names(DF1_modified)[key_pos + 1] <- "Key_copy"

方法2:dplyr包实现(tidyverse风格)

结合mutate新增列和relocate调整列位置:

library(dplyr)

DF1_modified <- DF1 %>%
  mutate(Key_copy = Key) %>%  # 复制Key列生成新列
  relocate(Key_copy, .after = Key)  # 将新列移动到原Key列右侧

内容的提问来源于stack exchange,提问作者dkcongo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 04:31:18