数据框中类别的上一个日期到同一类别的下一行

时间:2014-05-28 15:49:16

标签: r

X表示体育赛事中参赛者姓名的矢量。 Y表示参与者得分的分数。输出格式将用于预测分析,例如使用y3和y2的分数来预测y1。

从这个数据框开始:

    date1       x   y1
1   2008-10-01  B   78
2   2008-10-01  A   33
3   2008-10-15  A   89
4   2008-10-22  B   43
5   2008-10-22  C   36
6   2008-10-23  A   23
7   2008-11-01  C   66

我需要一个低开销的解决方案来生成以下数据框:

      date1     x   y1    date2     y2    date3     y3
1   2008-10-01  B   78      NA      NA
2   2008-10-01  A   33      NA      NA
3   2008-10-15  A   89  2008-10-01  33      NA
4   2008-10-22  B   43  2008-10-01  78      NA
5   2008-10-22  C   36      NA      NA
6   2008-10-23  A   23  2008-10-15  89  2008-10-01  33
7   2008-11-01  C   66  2008-10-22  36      NA

以下是示例数据:

https://s3.amazonaws.com/ACEO/sample.Rds

https://s3.amazonaws.com/ACEO/result.Rds

1 个答案:

答案 0 :(得分:1)

这将使用dplyr为您提供所需的输出(假设您实际上不想在date3y3的部分内容中使用空白<​​/ p>

require(dplyr)

dat %.%                      #assuming your data.frame is called `dat`
  group_by(x) %.%
  mutate(date2 = lag(date1, 1),
         y2 = lag(y1, 1),
         date3 = lag(date1,2),
         y3 = lag(y1,2))

#       date1 x y1      date2 y2      date3 y3
#1 2008-10-01 B 78         NA NA         NA NA
#2 2008-10-01 A 33         NA NA         NA NA
#3 2008-10-15 A 89 2008-10-01 33         NA NA
#4 2008-10-22 B 43 2008-10-01 78         NA NA
#5 2008-10-22 C 36         NA NA         NA NA
#6 2008-10-23 A 23 2008-10-15 89 2008-10-01 33
#7 2008-11-01 C 66 2008-10-22 36         NA NA