2013-02-12 25 views

Trả lời

7

Cách đơn giản nhất sẽ có thêm các cột mà bạn muốn và sau đó sắp xếp lại chúng:

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

Một cách khác:

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

Nếu bạn lo ngại về chi phí, có lẽ là một giải pháp data.table? (Với sự giúp đỡ từ this answer):

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

điều này sẽ hoạt động nhưng với chi phí khổng lồ nếu khung dữ liệu có hàng trăm biến số – Diegoal

+0

Yea chính xác khung dữ liệu của tôi rất lớn và tôi muốn làm điều này . Ngoài ra khung dữ liệu của tôi có thể thay đổi theo thời gian vì vậy tôi không muốn tham chiếu đến một vị trí được đánh số cụ thể –

+0

Nếu bạn không muốn một vị trí được đánh số cụ thể, làm thế nào để bạn biết vị trí đặt nó? –

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] 

Tạo biến vào cuối những data.frame và sau đó sử dụng một vector chỉ phát tín hiệu như thế nào để sắp xếp lại các cột. ind chỉ là một vectơ số

Các vấn đề liên quan