Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.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中使用多个度量变量和类别融化anova形数据集_R_Data.table_Melt - Fatal编程技术网

在R中使用多个度量变量和类别融化anova形数据集

在R中使用多个度量变量和类别融化anova形数据集,r,data.table,melt,R,Data.table,Melt,我知道这个问题可能已经被问过了,但我找不到在多个测量变量存在的情况下我所面临的具体问题的实例。 我有一个这样的数据表 library(data.table) set.seed(234) DT<-data.table(item=1:3,phase=c("pre-test","test","follow up"), control_RT=sample(400:600,3),control_ecc=sample(100:200,3),

我知道这个问题可能已经被问过了,但我找不到在多个测量变量存在的情况下我所面临的具体问题的实例。 我有一个这样的数据表

library(data.table)
set.seed(234)
DT<-data.table(item=1:3,phase=c("pre-test","test","follow up"),
               control_RT=sample(400:600,3),control_ecc=sample(100:200,3),
               oa_RT=sample(500:700,3),oa_ecc=sample(200:250,3),ya_RT=sample(450:550,3),ya_ecc=sample(230:260,3))
我尝试使用
variable
函数来重塑,但没有成功。有什么建议吗?

你可以用它


library(tidyr)
DT%>%
聚集(“键”、“值”、-项、-阶段)%>%
单独(键,c(“类别”,“键”))%>%
排列(键、值)
#>项目阶段类别ecc RT
#>1 1试验前控制178 549
#>2 1试验前oa 214 686
#>3 1预测试ya 243 508
#>4.2试验控制106 556
#>5.2测试oa 227 643
#>6 2测试ya 239 550
#>7 3跟进控制163 403
#>8 3跟进oa 226 684
#>9 3跟进ya 251 450

由于它是一个
数据表
,我们可以有效地使用
数据表
方法

library(data.table)
dcast(melt(DT, id.var = c('item', 'phase'))[, c('Category', 'key') := 
       tstrsplit(variable, '_')], item + phase + Category ~key, value.var = 'value')
#  item     phase Category  RT ecc
#1:    1  pre-test  control 549 178
#2:    1  pre-test       oa 686 214
#3:    1  pre-test       ya 508 243
#4:    2      test  control 556 106
#5:    2      test       oa 643 227
#6:    2      test       ya 550 239
#7:    3 follow up  control 403 163
#8:    3 follow up       oa 684 226
#9:    3 follow up       ya 450 251

看一看tidyr函数GatherThank,data.table中是否有类似的函数?我不知道-我从来没有使用过data.table,对不起,非常感谢,一如既往!
library(data.table)
dcast(melt(DT, id.var = c('item', 'phase'))[, c('Category', 'key') := 
       tstrsplit(variable, '_')], item + phase + Category ~key, value.var = 'value')
#  item     phase Category  RT ecc
#1:    1  pre-test  control 549 178
#2:    1  pre-test       oa 686 214
#3:    1  pre-test       ya 508 243
#4:    2      test  control 556 106
#5:    2      test       oa 643 227
#6:    2      test       ya 550 239
#7:    3 follow up  control 403 163
#8:    3 follow up       oa 684 226
#9:    3 follow up       ya 450 251