我的数据正在关注
time id var1 var2 var3 var4 var5 var6
a 1 36.9 82.7 22.2 24.2 37.9 46.5
a 2 35.0 88.9 27.4 27.3 37.4 44.9
a 3 39.6 85.6 23.1 24.0 35.4 46.0
a 4 37.1 87.6 25.2 25.5 39.7 47.1
a 5 36.9 87.1 25.8 25.1 36.7 44.4
a 6 37.7 89.7 25.8 26.6 41.9 41.2
a 7 36.2 87.3 25.6 26.0 34.5 42.0
a 8 37.1 88.3 25.5 26.0 39.7 41.6
a 9 34.9 87.8 26.2 26.9 35.7 45.1
a 10 39.7 87.4 24.7 23.3 40.0 41.3
b 1 37.3 91.7 27.9 27.1 39.0 46.4
b 2 41.0 87.3 23.4 23.5 39.0 49.1
b 3 36.9 91.0 27.7 27.1 43.0 44.6
b 4 34.1 91.3 28.6 28.9 38.6 42.7
b 5 35.7 87.3 25.9 26.3 41.4 44.8
b 6 39.7 89.5 25.3 25.0 39.1 45.5
b 7 42.4 89.8 25.6 22.2 43.2 50.3
b 8 37.3 89.9 26.1 26.8 38.3 42.9
b 9 37.5 93.5 29.0 27.7 40.1 50.8
b 10 39.4 91.7 26.0 26.5 42.0 51.6
c 1 38.5 89.3 24.6 26.3 41.7 48.9
c 2 38.4 85.8 24.0 24.3 35.4 40.8
c 3 40.2 94.3 27.0 27.9 40.7 44.1
c 4 35.9 88.4 26.7 26.5 37.8 44.5
c 5 37.7 88.0 25.9 24.6 36.4 44.1
c 6 34.1 84.7 25.4 25.3 37.4 43.4
c 7 36.1 84.8 24.5 24.8 39.6 44.7
c 8 38.6 90.1 26.4 25.6 38.7 47.8
c 9 34.5 84.7 25.1 25.2 37.7 42.1
c 10 35.2 84.6 24.9 24.9 33.7 38.9
时间是主体内因素,var1到var6是不同的结果指标。我想对每个结果测量进行主体内方差分析,以检查其时间变化。我在ez包中使用ezANOVA函数进行分析。
由于我的真实数据集中有许多结果变量(列)(这里仅描述了六个用于说明目的),我希望编写一个for循环,以便可以自动执行多个主体内ANOVA测试。
我使用以下代码:
library(ez)
obj<-NULL
for(i in 1:6){
obj[[i]] <- ezANOVA(data = data,
dv = .(as.factor(colnames(data)[i+2])),
wid = .(id),
within = .(time),
detailed = T, type = 3)
}
不幸的是,我收到以下错误消息:
Error in ezANOVA_main(data = data, dv = dv, wid = wid, within = within, :
"as.factor(colnames(data)[i + 2])" is not a variable in the data frame provided.
当我将“var1”放在括号内时,该功能可以很好地使用以下代码:
ezANOVA(data = data3,
dv = .(var1),
wid = .(id),
within = .(time),
detailed = T, type = 3)
我认为ezANOVA函数可能只接受.()
内的确切变量名称。那里不允许使用函数。
我是否知道是否有办法同时运行多个主题内ANOVA测试,而无需手动将每个结果指标的名称输入.()
?
或者,如果我们可以对ezANOVA源代码进行一些修改,可以通过在R中键入ezANOVA来获得,以便在.()
内允许该功能。
欢迎任何解决方案!
答案 0 :(得分:1)
对long
包不太熟悉,但不是修改包,而是使用ezANOVA
进行更多的数据操作。
检查一下,让我知道它是否适合您,或者您是否希望我改进它。
您将所有结果作为数据框获得。
dplyr
我建议你一步一步地运行代码,看它是如何工作的。 尝试手动检查结果是否正确。 如果您对输出感到满意,或者您想要进行任何修改,请告诉我。