Tôi có DF nơi tôi muốn thêm một biến mới được gọi là "B" vào vị trí thứ 2.Thêm biến mới vào vị trí cụ thể trong khung dữ liệu
A C D
1 1 5 2
2 3 3 7
3 6 2 3
4 6 4 8
5 1 1 2
Có ai có ý tưởng không?
Tôi có DF nơi tôi muốn thêm một biến mới được gọi là "B" vào vị trí thứ 2.Thêm biến mới vào vị trí cụ thể trong khung dữ liệu
A C D
1 1 5 2
2 3 3 7
3 6 2 3
4 6 4 8
5 1 1 2
Có ai có ý tưởng không?
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"))
đ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
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ể –
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ó? –
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ố
'DF $ B <- newvariable'? –
thứ tự của các biến sẽ giống như ACD B. Thứ tự tôi muốn có là ABCD – Diegoal