示例数据如下:
id sy OC
13693 2017 1
13752 2017 5
13693 2017 4
44555 2018 3
对于以下代码,我在做什么?
SORs.pivot(index='id',columns="sy",values='OC').add_prefix('sy').reset_index()
我以前从未见过R中使用过“枢轴”,但是一旦我克服了这一障碍,我就渴望学习。
我希望最终输出如下所示:
id sy2017 sy2018
13693 1 na
13752 5 na
13693 4 na
44555 na 3
我还希望获取重复ID(13693)的单元格中值的总和。
首先,请允许我为混合R和Python表示歉意。对我而言那真是愚蠢。
即使使用了某些解决方案,我仍然在数据方面遇到问题:
现在,这将产生一个包含200,000条记录的df-但是逻辑有效,并且我准备将列分散开。
我尝试了两种不同的方法,但是都没有用。
首先我尝试:
reshape(dat2, idvar="id", timevar="sy", direction="wide").
所有产生的结果是带有两列的df。第一个是subjectkey,第二个是DistinctOrderCound.2017:2018-后一列只是NA的一列。
然后我尝试:
spread(dat2, key = sy, value=value).
这会产生一个错误,指出行的重复值和重复项的示例列表。
我认为重塑应该可以正常工作。我不认为求和再有任何问题,因为我通过预查询解决了这一问题。
答案 0 :(得分:0)
R软件包tidyr
使用spread
函数来完成此任务。就您而言,您可以尝试tidyr::spread(data, sy, OC)
来完成您的目标。有关tidyr::spread
和tidyr::gather
的更多信息,请参见this blog post
答案 1 :(得分:0)
dcast()解决了所有问题。有点奇怪,多么简单。
谢谢大家!