R 创建一个;“滞后”;数据帧

R 创建一个;“滞后”;数据帧,r,dataframe,R,Dataframe,我有下面的数据框,希望将除前两列以外的所有列向下移动。基本上,我希望看到一个“滞后”的数据帧。似乎有很多关于如何为单个列获取此信息的内容(请参阅),但没有选择大多数列的内容 My data = d1 <- data.frame(month = c("jan", "feb", "mar", "apr", "may", "june"), conv = c(1, 3, 6, 2, 3, 8), month = c("jan",

我有下面的数据框,希望将除前两列以外的所有列向下移动。基本上,我希望看到一个“滞后”的数据帧。似乎有很多关于如何为单个列获取此信息的内容(请参阅),但没有选择大多数列的内容

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
我的数据=
d1一种便宜的方法:

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
month conv month.1访问单击
1月1日不适用
2月2日1月3日64
3月3日2月6日62
4月2日3月4日36
5月5日4月3日5
6月6日5月8日16 6
一种便宜的方法:

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
month conv month.1访问单击
1月1日不适用
2月2日1月3日64
3月3日2月6日62
4月2日3月4日36
5月5日4月3日5
6月6日5月8日16 6