在R

时间:2015-08-22 16:30:42

标签: r

我有一个名为fusion的患者数据集,它有多个列,分为4类,即caseid(n = 53),判断(n = 3),方法(n = 5)和技术(n = 104)。我想将它拆分为尺寸长度为53,3,5,4的4维数组。现在这是数据框的外观:

'id'   'judge'    'method'    'technique1'    'technique2'    'technique3' .. 'technique107'

  A      1           M1        1.21           1.4             5.65   
  B      2           M2        45             43              6 23
  C      3           M3        4              31              723
  D      2           M4        55             73              823
  E      1           M5        67             33              423
  F      3           M2        33             93              28
  G      1           M1        5              83              28

  ZZ     1           ..        ..            ..                ..

我希望数组维度名称与'caseid','判断''方法''技术'相匹配,而且,由于每种情况都是唯一的,我希望每行53行都有row.names = fusion $ caseid。有人可以帮忙吗?我一直在尝试plyr,申请等...但作为一个新手我还没有成功。很乐意详细说明。

1 个答案:

答案 0 :(得分:1)

我们可以meltwidelong格式的数据集,指定'id.var'列,使用'value'列创建array { {1}}和dimnames基于来自“dM”非数字列的dim值和unique length个值。

unique

数据

library(reshape2)
dM <- melt(d, id.var=c('id', 'judge', 'method'))
l1 <- lapply(dM[1:4], unique)
ar1 <- array(dM$value, dim=lengths(l1), dimnames=l1)