Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:当行值成为列标签时,如何在R中融化数据?_R_Reshape_Melt - Fatal编程技术网

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