我有一个数据集,其中包含以下形式的数据:
Name, Result, Date #A lot of other stuff as we, but these are the only relevant ones I think
Peter Parker, 150, 2018-03-03
Peter Parker, 155, 2018-03-04
Peter Parker, 156, 2018-03-05
Peter Parker, 154, 2018-03-06
Peter Parker, 158, 2018-03-07
Benny Thompson, 130, 2018-03-03
Benny Thompson, 132, 2018-03-04
Benny Thompson, 138, 2018-03-05
Benny Thompson, 140, 2018-03-07
Benny Thompson, 139, 2018-03-09
Mylo Thony, 177, 2018-03-11
有些人至少出现过5次。如果我给予前4次,我想创建一个模型,通过回归预测第5次结果。因此,我假设所有人的行为都是相同的,并想将我的数据转换为以下格式:
150, 155, 156, 154, 158
130, 132, 138, 140, 139
并且只适用于所有在记录中至少有5个结果的人,我不知道从哪里开始,我来自Java和C++部门,通常我只会在上面运行一个for循环,但这对我来说似乎非常不像R,至少我还没有见过这样的东西,什么是最好的方法来做这样的事情?
2条答案
按热度按时间ergxz8rk1#
据我所知,必须采取以下步骤:
正在删除行
通过使用以R为基数的
with
函数,您可以移除观测值少于5个的参与者。转换为宽格式
您的数据当前为长格式。使用
tidyr
程序包中的spread
函数可以轻松地将其转换为宽格式。传播函数需要包含新列名的关键字列。如果每人只有5个观测值,只要Name列中有唯一值,就可以添加一个重复数字1到5的新列(使用dplyr
包中的n_distinct
计算)。请注意,您的数据应同时按名称和日期排序,以便将编号分配给正确的观测。如果每人的观测值超过5个,则必须修改解决方案。
6mw9ycah2#
也许"row"格式不是对数据进行预测的最佳方式,我将给出一个示例,其中dplyr/tidyr用于一行中的数据:
数据:
过滤和转换数据的步骤
最终,您可以根据预期(在未变换的数据集上)应用单个线性模式预测。