2013-02-12 3 views
5

У меня есть DF, где я хочу добавить новую переменную под названием «B» во вторую позицию.Добавить новую переменную в определенную позицию в dataframe

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'? –

+0

порядок переменных будет выглядеть как ACD B. Приказ, который я хочу иметь, это ABCD – Diegoal

ответ

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

, это сработает, но с огромными накладными расходами, если в dataframe есть сотни переменных. – Diegoal

+0

Да, именно мой кадр данных огромен, и я хочу сделать это , Также мой кадр данных может время от времени меняться, поэтому я не хочу ссылаться на определенную нумерованную позицию. –

+0

Если вам не нужна определенная нумерованная позиция, откуда вы знаете, куда ее поместить? –

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 - всего лишь вектор чисел

Смежные вопросы