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
以下是示例数据:
答案 0 :(得分:1)
这将使用dplyr
为您提供所需的输出(假设您实际上不想在date3
和y3
的部分内容中使用空白</ 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