2013-02-12 90 views
5

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

任何人都有想法嗎?

+0

'DF $ B < - newvariable'? – 2013-02-12 12:10:26

+0

變量的順序看起來像ACD B.我想要的順序是ABCD – Diegoal 2013-02-12 12:18:53

回答

7

最簡單的方法是添加你想要的列,然後對它們重新排序:

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")) 
+1

這可以工作,但如果數據幀有數百個變量,則會產生巨大的開銷 – Diegoal 2013-02-12 12:21:03

+0

是的,我的數據框很大,我想這樣做。此外,我的數據框可能會不時變化,所以我不想引用具體的編號位置 – 2016-10-18 15:31:38

+0

如果您不想要一個特定的編號位置,您怎麼知道把它放在哪裏? – 2016-10-20 16:33:03

0
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只是一個數字矢量

相關問題