2013-02-12 15 views

risposta

7

Il modo più semplice sarebbe quella di aggiungere le colonne che si desidera e quindi riordinarli:

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

Un altro modo:

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

Se siete preoccupati per la testa, forse una soluzione data.table? (Con l'aiuto di this answer):

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

questo funzionerebbe ma con un immenso sovraccarico se il dataframe ha centinaia di variabili – Diegoal

+0

Sì, il mio data frame è enorme e voglio fare questo . Anche il mio frame di dati potrebbe cambiare di volta in volta, quindi non voglio fare riferimento a una specifica posizione numerata –

+0

Se non vuoi una posizione numerata specifica, come fai a sapere dove metterla? –

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] 

Creare la variabile al termine della data.frame e quindi utilizzando un indicatore vettore di segnalazione come riordinare le colonne. ind è solo un vettore di numeri

Problemi correlati