长桌到宽桌子与重复

时间:2017-09-25 16:02:17

标签: r dataframe dplyr reshape2

我对一组受试者进行了问卷调查。有些问题是单一选择,有些则是多项选择。它们存储在data.frame中,如第一个所示(用户ID,问题ID,答案ID):

usua_rut preg_codigo resp_correlativo
   1           1                1
   2           1                2
   3           1                1
   4           1                2
   5           1                1
   1           2                1
   1           2                2
   2           2                2
   2           2                3
   3           2                3
   4           2                3
   5           2                4

以下是创建它的代码:

data.plot<-data.frame(usua_rut=c(1:5,1,1,2,2,3:5),
                      preg_codigo=c(rep(1,5),rep(2,7)),
                      resp_correlativo=c(1,2,1,2,1,1,2,2,3,3,3,4))

我们的想法是使用如下的data.frame来绘制结果:

  usua_rut preg_codigo.1  preg_codigo.2
      1           1            1+2
      2           2            2+3
      3           1             3
      4           2             3
      5           1             4

在这种情况下,为了在我们所有的情节中保持相同数量的响应者,我们需要创建新的&#34;仿真&#34;第二个问题的类别(例如&#34; 1 + 2&#34;)。我们将在第一个问题的条形图中使用第二个问题作为分组因子。

我尝试使用dcast,但sum agregator会这样做:它总结。所以,我1+2而不是3。我使用了aggregate函数,但它一次只能运行一个preg_codigo

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

基于1的快速而肮脏的答案:

aggregate

然而,我试图获得一个开箱即用的功能来达到这个目的。

答案 1 :(得分:1)

使用reshape2包中的dcast:

dcast(data.plot, usua_rut ~ preg_codigo, fun.agg = paste, collapse="+")

  usua_rut 1   2
1        1 1 1+2
2        2 2 2+3
3        3 1   3
4        4 2   3
5        5 1   4