【问题标题】:Add new variable to specific position in dataframe将新变量添加到数据框中的特定位置
【发布时间】:2013-01-27 17:45:35
【问题描述】:

我有一个 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

有人有想法吗?

【问题讨论】:

  • DF$B <- newvariable ?
  • 变量的顺序看起来像 A C D B。我想要的顺序是 A B C D

标签: r


【解决方案1】:
dat$B <- 1:5 
ind <- c(1:which(names(data) == "A"),ncol(data),(which(names(data) == "A")+1):ncol(data)-1)
data <- data[,ind]

在 data.frame 的末尾创建变量,然后使用指示符向量指示如何重新排序列。 ind 只是一个数字向量

【讨论】:

  • 感谢您的回答!我有(我们大多数人确实有)一个数据框,其中不仅有几个变量,因此手动输入每个列名或数字会太费力了!但是,您的代码应进行如下调整:(ncol(data)-1)。如果您忘记了额外的括号,A 列会得到 A.1 的副本。
【解决方案2】:

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

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

另一种方式:

newdat <- cbind(dat[1], B=1:5, dat[,2:3])

如果您担心开销,也许是data.table 解决方案? (在this answer的帮助下):

library(data.table)
dattable <- data.table(dat)
dattable[,B:=1:5]
setcolorder(dattable, c("A", "B", "C", "D"))

【讨论】:

  • 这可行,但如果数据帧有数百个变量,则会产生巨大的开销
  • 是的,我的数据框确实很大,我想这样做。此外,我的数据框可能会不时更改,因此我不想引用特定编号的位置
  • 如果你不想要一个特定的编号位置,你怎么知道放在哪里?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-21
  • 2018-05-03
  • 2015-10-16
  • 1970-01-01
  • 2015-07-09
  • 2020-04-17
  • 1970-01-01
相关资源
最近更新 更多