如何将数据重新整形为长格式并运行重复测量anova测试?

时间:2016-06-03 18:59:36

标签: r reshape anova

我有一个我正在处理它的数据。我需要对它进行重复测量Anova测试,但首先我必须将数据重新整形为长格式。我做了一些在网站上显示的内容,重塑并没有给出任何错误,但我认为它不起作用。所以Anova测试会给出错误。这是我的代码和错误。

# reshaping to long format
id=1:length(veri$SIRA)
k.1 <- veri$KOLEST
k.2 <- veri$KOLEST2
k.3 <- veri$KOLEST3
veri2 <- data.frame(id,k.1,k.2,k.3)
longformat <- reshape(veri2,direction="long", varying=list("k.1","k.2","k.3"), idvar="id")

这是longformat的输出

  id  time k.1 k.2 k.3
1  1    1 209 195 181
2  2    1 243 184 172
3  3    1 192 178 162
4  4    1 210 112  93
5  5    1 190 188 172
6  6    1 232 169 156

时间一直是1。这对我来说似乎有些奇怪。根据3种不同的措施,我认为它应该是1-2-3。

运行测试时出现错误:

repmesao <- aov(k~time+Error(id/time), data=longformat)
  

model.frame.default中的错误(公式= k~id / time,data = longformat,:
  变量&#39; k&#39;

的类型(列表)无效

我如何解决这个问题?有什么建议吗?

1 个答案:

答案 0 :(得分:0)

要进行整形,请使用库(tidyr)和类似命令

data_long <- gather(data, group, dv, range of columns)  

如果你有超过dv,那么这个程序并不好。我通常做的是将数据分成dvs,如data_dv1&lt; - data [1:3]和data_dv2&lt; -cbind(data [1:2],data [4])。我重新塑造它,如上所示,然后我只是cbind(data_dv1_long,data_dv2_long)注意不是所有列都应该组合,因为你将在两个df中都有你的主题id,所以相应地选择cbind的列。

此外,不知道你将用于ANOVA,但我建议使用类似命令的库(ez)

ezANOVA(data=data, dv=.(dv), wid=.(subject_id), within=.(group1), between=.(group2), detail=T)