将新变量添加到dataframe中的特定位置

将新变量添加到dataframe中的特定位置,r,R,我有一个DF,我想在第二个位置添加一个名为“B”的新变量 A C D 1 1 5 2 2 3 3 7 3 6 2 3 4 6 4 8 5 1 1 2 有人有主意吗 最简单的方法是添加所需的列,然后对它们重新排序: dat$B <- 1:5 newdat <- dat[, c("A", "B", "C", "D")] dat$BDF$B变量的顺序看起来像一个cdb。我想要的顺序是一个bc数据。这会起作用,但会带来巨大的开销,如果数据帧有数百个变量,那么确切地说,我的数据帧是巨大

我有一个DF,我想在第二个位置添加一个名为“B”的新变量

  A C D
1 1 5 2
2 3 3 7
3 6 2 3
4 6 4 8
5 1 1 2

有人有主意吗

最简单的方法是添加所需的列,然后对它们重新排序:

dat$B <- 1:5
newdat <- dat[, c("A", "B", "C", "D")]

dat$B
DF$B变量的顺序看起来像一个cdb。我想要的顺序是一个bc数据。这会起作用,但会带来巨大的开销,如果数据帧有数百个变量,那么确切地说,我的数据帧是巨大的,我想这样做。此外,我的数据框可能会不时更改,因此我不想引用特定的编号位置。如果您不想要特定的编号位置,您如何知道将其放置在何处?谢谢您的回答!我有(而且我们大多数人都有)一个数据框架,其中包含的变量不止几个,因此手动输入每个列名或数字将是太多的工作了!但是,您的代码应该按如下方式进行调整:
(ncol(data)-1)
。如果您忘记了额外的括号,A列将获得一个副本A.1。
newdat <- cbind(dat[1], B=1:5, dat[,2:3])
library(data.table)
dattable <- data.table(dat)
dattable[,B:=1:5]
setcolorder(dattable, c("A", "B", "C", "D"))
dat$B <- 1:5 
ind <- c(1:which(names(data) == "A"),ncol(data),(which(names(data) == "A")+1):ncol(data)-1)
data <- data[,ind]