2013-09-03 2 views
1

У меня есть следующий фрейм данных и вы хотите сдвинуть все, кроме первых двух столбцов вниз. В принципе, я хочу увидеть «задержанный» кадр данных. Кажется, что есть много способов получить это для одного столбца (см. here), но ничего не выбрать большинство столбцов.Создание «отложенного» кадра данных

My data = 
d1 <- data.frame(month = c("jan", "feb", "mar", "apr", "may", "june"), 
       conv = c(1, 3, 6, 2, 3, 8), 
       month = c("jan", "feb", "mar", "apr", "may", "june"), 
       visit = c(1, 2, 4, 8, 16, 32), 
       click = c(64, 62, 36, 5, 6, 3)) 
d1 

Desired output = 
d2 <- data.frame(month = c("jan", "feb", "mar", "apr", "may", "june"), 
       conv = c(1, 3, 6, 2, 3, 8), 
       month = c(NA, "jan", "feb", "mar", "apr", "may"), 
       visit = c(NA, 1, 2, 4, 8, 16), 
       click = c(NA, 64, 62, 36, 5, 6)) 
d2 

Помогите ?!

ответ

1

Недорогой метод:

cbind(d1[,1:2],head(rbind(NA,d1),-1)[,-(1:2)]) 

Результат:

month conv month.1 visit click 
1 jan 1 <NA> NA NA 
2 feb 3  jan  1 64 
3 mar 6  feb  2 62 
4 apr 2  mar  4 36 
5 may 3  apr  8  5 
6 june 8  may 16  6 
Смежные вопросы