所以我有一个表,每行代表特定事件中的给定用户。每行包含两类信息:此类事件的结果以及特定用户的数据。多个用户可以参加同一个事件。用R中前一行的滚动平均值更新表?
为了清楚起见,这里就是这样表的一个简单的例子:
EventID Date Revenue Time(s) UserID X Y Z
1 1/1/2017 $10 120 1 3 2 2
1 1/1/2017 $15 150 2 2 1 2
2 2/1/2017 $50 60 1 1 5 1
2 2/1/2017 $45 100 4 3 5 2
3 3/1/2017 $25 75 1 2 3 1
3 3/1/2017 $20 210 2 5 5 1
3 3/1/2017 $25 120 3 1 0 4
3 3/1/2017 $15 100 4 3 1 1
4 4/1/2017 $75 25 4 0 2 1
我的目标是建立一个可以给特定用户的性能历史模型(在本例中的属性X,Y和Z)预测事件的给定收入和时间。
我现在所追求的是格式化数据以训练和测试这种模型的一种方法。更具体地说,我想要以每行保留特定于事件的信息的方式来变换表格,同时将每个用户的移动平均值提交到前一事件。思考过程的一个例子可以是:用户增加,直到事件分别在属性X,Y和Z中呈现平均值2,3.5和1.5,并且此类事件的收入和时间结果分别是25美元和75美元,现在我将用它作为我训练的输入。
再次为清楚起见,这里是输出我希望在原表应用这种逻辑的一个例子:
EventID Date Revenue Time(s) UserID X Y Z
1 1/1/2017 $10 120 1 0 0 0
1 1/1/2017 $15 150 2 0 0 0
2 2/1/2017 $50 60 1 3 2 2
2 2/1/2017 $45 100 4 0 0 0
3 3/1/2017 $25 75 1 2 3.5 1.5
3 3/1/2017 $20 210 2 2 1 2
3 3/1/2017 $25 120 3 0 0 0
3 3/1/2017 $15 100 4 3 5 2
4 4/1/2017 $75 25 4 3 3 1.5
请注意,在每个用户的第一次亮相的所有属性都为0,因为我们还知道没有关于他们。另外,在用户的第二次露面中,我们所知道的只是他第一次露面的结果。在第5和第9行中,用户1和4的第三次露面开始显示他们之前表演的滚动平均值。
如果我只处理一个用户,我会解决这个问题,只需计算他的属性的移动平均值,然后只将属性列中的数据向下移动一行。我的问题是:
- 有没有办法执行这种转变过滤由UserID,当处理与多个用户的表?
- 或者在R中有更好的方法直接从原始表格计算滚动平均值,方法是始终在每个用户的下一次出现中放置结果?
它可以假定所有的行已经按日期排序。任何与此问题有关的其他提示或参考也是受欢迎的。
而且,这不是明显的如何总结一下我有一个衬垫标题问题,所以我愿意从想象的描述它的改进方式任意[R专家的建议。
正是我之后,感谢@JuanBosco的帮助! – htaunay