在其他数据框列之间添加新列

TWe*_*est 12 r dataframe

我想在我的数据帧中添加一个带有"NA"的新列:

     A       B
1    14379  32094
2   151884  174367
3   438422  449382
Run Code Online (Sandbox Code Playgroud)

但我需要它位于col之间.A和B,像这样:

     A       C      B
1    14379   NA    32094
2   151884   NA    174367
3   438422   NA    449382
Run Code Online (Sandbox Code Playgroud)

我知道如何添加col.col后的C. B,但这对我没有帮助......任何人都知道怎么做?

ags*_*udy 25

在两个步骤中,您可以重新排序列:

dat$C <- NA
dat <- dat[, c("A", "C", "B")]
         A  C          B
1  0.596068 NA -0.7783724
2 -1.464656 NA -0.8425972
Run Code Online (Sandbox Code Playgroud)

你也可以使用 append

dat <- data.frame(A = rnorm(2), B = rnorm(2))
as.data.frame(append(dat, list(C = NA), after = 1))

           A   C          B
1 -0.7046408  NA  0.2117638
2  0.8402680  NA -2.0109721
Run Code Online (Sandbox Code Playgroud)


mne*_*nel 5

如果使用data.table,可以使用该功能setcolorder.请注意,NA存储为逻辑变量,如果要将列作为整数,双列或字符列启动,则可以使用NA_integer,NA_real_或者NA_character_

例如

library(data.table)
DT <- data.table(DF)
# add column `C`  = NA 

DT[, C := NA]

setcolorder(DT, c('A','C','B'))
DT
##         A  C      B
## 1:  14379 NA  32094
## 2: 151884 NA 174367
## 3: 438422 NA 449382
Run Code Online (Sandbox Code Playgroud)

你可以在一行中做到这一点

setcolorder(DT[, C: = NA], c('A','B','C'))
Run Code Online (Sandbox Code Playgroud)