R-将data.frame格式化为另一个“组合”data.frame,基于依赖于不同列的列中的公共值

时间:2013-06-04 17:40:24

标签: r

我从一个由三列组成的数据框开始。 第1列包含ID,表示某些人(第2列)的重量(第3列)以千克为单位测量时的3个不同时间段。

所有人都被不定期地测量,这意味着,有些人在一段时间内被测量多次或仅被测量一次,但在所有时间段内都没有。

   id       person_name person_weight
    1          Carol         51
    1          Mike          76
    1          Mike          81
    1          Dave          66
    1          Carol         59
    2          James         78
    2          Simone        55
    2          Simone        49
    2          David         85
    3          Mike          93
    3          Dave          110
    3          Dave          98 

实际上,这里的全部内容只是一个简化的例子..所以如果这种数据集合毫无意义,请不要理会。

现在,我想计算一个时间段内每个人的平均(平均)体重 最终得到一个如下所示的组合数据框:

group_id    Carol   Mike    Dave    James   Simone  David
   1         55     78.5     66      NA       NA     NA
   2         NA      NA      NA      78       52     85
   3         NA      93      104     NA       NA     NA

我尝试了一些基本的R函数(表,应用等),但无法处理列中的依赖。

提前感谢任何帮助我更接近第二个/'组合'数据帧的帮助。

1 个答案:

答案 0 :(得分:5)

看起来像一个简单的dcast

library(reshape2)
dcast(dat,id ~person_name,
      fun.aggregate = mean,
      value.var = "person_weight",fill = NA_real_)
  id Carol Dave David James Mike Simone
1  1    55   66    NA    NA 78.5     NA
2  2    NA   NA    85    78   NA     52
3  3    NA  104    NA    NA 93.0     NA