我有一个名为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,申请等...但作为一个新手我还没有成功。很乐意详细说明。
答案 0 :(得分:1)
我们可以melt
从wide
到long
格式的数据集,指定'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)