2013-02-12 19 views

Odpowiedz

7

Najprościej byłoby dodać kolumny, które chcesz, a następnie zmienić ich kolejność:

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

Innym sposobem:

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

Jeśli jesteś zaniepokojony głową, być może rozwiązaniem data.table? (Z pomocą this answer):

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

, ale działałoby to z ogromnym obciążeniem, gdyby ramka danych zawierała setki zmiennych – Diegoal

+0

Tak, dokładnie moja ramka danych jest ogromna i chcę to zrobić . Również moja ramka danych może się zmieniać od czasu do czasu, więc nie chcę odwoływać się do określonej pozycji numerowanej –

+0

Jeśli nie chcesz określonej pozycji numerowanej, skąd wiesz, gdzie ją umieścić? –

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] 

Tworzenie zmiennej w końcu data.frame a następnie przy użyciu wektora wskaźnik sygnalizacyjny jak zmienić kolejność kolumn. ind to po prostu wektor liczb:

Powiązane problemy