在data.frame

时间:2016-10-21 10:28:02

标签: r dataframe time-series

我在下表中有一个时间序列数据框。我想在00:00列和00:15列之间在R中进行配对测试。然后在00:15和下一个之间,依此类推。

我的数据看起来像this

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

您可以使用for循环执行此操作:

res=NULL
for(i in 2:ncol(df)){
res<-c(res, t.test(df[, i-1], df[, i], paired=T)$p.value)
}
print(res)
#### [1] 0.87346300 0.29767460 0.07232177

或使用apply系列函数:

sapply(2:ncol(df), function(x) t.test(df[, x-1], df[, x], paired=T)$p.value)
#### [1] 0.87346300 0.29767460 0.07232177

我看到使用rowr::rollApply的第三个解决方案,它将一个函数应用于滚动窗口,此处为2(对数据的转置)

library(rowr)
rollApply(t(df), function(x) t.test(x[1, ], x[2, ], paired=T)$p.value, minimum=2, window=2)
#### [1] 0.87346300 0.29767460 0.07232177

我建议调整置信度以考虑比较的多样性(类似alpha/(ncol(df)-1)

您的数据:

set.seed(1)
df=as.matrix(data.frame(rnorm(4),rnorm(4), rnorm(4), rnorm(4)))