Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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中的4d阵列_R - Fatal编程技术网

将数据帧转换为R中的4d阵列

将数据帧转换为R中的4d阵列,r,R,我有一个名为fusion的患者数据集,它有4个类别的多列,即caseid(n=53)、judge(n=3)、method(n=5)和Technical(n=104)。我想把它拆分成一个4维数组,长度为53,3,5,4。现在,数据框的外观如下所示: 'id' 'judge' 'method' 'technique1' 'technique2' 'technique3' .. 'technique107' A 1 M1 1

我有一个名为fusion的患者数据集,它有4个类别的多列,即caseid(n=53)、judge(n=3)、method(n=5)和Technical(n=104)。我想把它拆分成一个4维数组,长度为53,3,5,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”、“judge”“method”“technology”匹配,而且由于每个案例都是唯一的,我希望53行中的每一行都有row.names=fusion$caseid。有人能帮忙吗?我一直在尝试plyr、申请等。。但是作为一个新手,我还没有成功。我们很乐意详细说明。

我们可以
将数据集从
wide
转换为
long
格式,指定“id.var”列,使用带有
dimnames
dim
的“值”列,基于
unique
值和
unique
非数字列中的
length
值,创建
array

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)
library(重塑2)
dM
d1 <- expand.grid(id= c(LETTERS, paste0(LETTERS, LETTERS), 'AAA'),
     judge=1:3, method=paste0('M', 1:5))
set.seed(24)
d2 <- as.data.frame(matrix(rnorm(nrow(d1)*104), ncol=104, 
      dimnames=list(NULL, paste0('technique', 1:104))))
d <- cbind(d1, d2)