R:当行值成为列标签时,如何在R中融化数据?
我有这些数据R:当行值成为列标签时,如何在R中融化数据?,r,reshape,melt,R,Reshape,Melt,我有这些数据 RES RANK1 RANK2 RANK3 RANK4 RANK5 1 3 3 5 16 1 2 3 1 2 5 16 3 3 5 15 10 1 如何融化数据,使RANK1到RANK5的值成为变量,RANK1到RANK5的值成为值 收集数据的方法是:在(22)项列表中,选择前5项偏好 新数据将被分析,就好像答案是多个响应一样 预期输出为(例如RES=1) 谢谢 您需要融化您的数
RES RANK1 RANK2 RANK3 RANK4 RANK5
1 3 3 5 16 1
2 3 1 2 5 16
3 3 5 15 10 1
如何融化数据,使RANK1到RANK5的值成为变量,RANK1到RANK5的值成为值
收集数据的方法是:在(22)项列表中,选择前5项偏好
新数据将被分析,就好像答案是多个响应一样
预期输出为(例如RES=1)
谢谢 您需要
融化
您的数据,然后dcast
它。因为每个组合没有唯一的值,所以当有多个值时,需要某种方法来保留所有值(这里发生的情况是RES==1
和VALUE==3
)。在这种情况下,我们只需使用粘贴
和折叠
参数来连接这些值:
dcast( melt( df , measure = 2:6 ) , RES ~ value , value.var = "variable" , fun = function(x) paste(x,collapse=";") , fill = "" )
# RES 1 2 3 5 10 15 16
#1 1 RANK5 RANK1;RANK2 RANK3 RANK4
#2 2 RANK2 RANK3 RANK1 RANK4 RANK5
#3 3 RANK5 RANK1 RANK2 RANK4 RANK3
使用RANK*
列作为度量变量的melt
的效果是为我们提供一个包含两列id变量的长数据集,如下所示
head( melt( df , measure = 2:6 ) )
# RES variable value
#1 1 RANK1 3
#2 2 RANK1 3
#3 3 RANK1 3
#4 1 RANK2 3
#5 2 RANK2 1
#6 3 RANK2 5
我不确定我是否理解这个问题。。。你能提供一个你想要的输出的例子吗?嗨,尼科,我编辑了这个问题让你看到我的预期输出。谢谢嗨,西蒙,是的,但这不是我需要的。我为您编辑了我的问题,以查看我的预期输出,谢谢您的帮助@迪西:是的,它是。。。等一下。@dixi对于value=3和res=1,您同时拥有rank1和rank2。你如何决定他们之间的关系?e、 你把rank2放在你的例子里,我明白了。可能这只是(数据)编码的一个错误,所以rank1或rank2都可以。。如果可以同时使用rank1和rank2作为值,那就更好了。谢谢Simon!这就是我要找的-D
head( melt( df , measure = 2:6 ) )
# RES variable value
#1 1 RANK1 3
#2 2 RANK1 3
#3 3 RANK1 3
#4 1 RANK2 3
#5 2 RANK2 1
#6 3 RANK2 5