比较前一天与当前日值的方法

时间:2016-01-12 17:18:18

标签: r

我正在寻找一种更好的方法来比较一天(第X天)到前一天(第X-1天)的值。我在这里使用airquality数据集。假设我有兴趣比较一天的风和前一天的风。现在我正在使用merge()汇集两个数据帧 - 一个当前数据帧和一个前一天。我也只是从Day列中减去1来获取PrevDay列:

airquality$PrevDay=airquality$Day-1

airquality.comp <- merge(
  airquality[,c("Wind","Day")],
  airquality[,c("Temp","PrevDay")], 
  by.x=c("Day"),by.y=c("PrevDay"))

我的问题是,如果我想回顾2天或者我想切换WindTemp并以另一种方式查看它们,我需要创建另一个数据框。这看起来很笨重。任何人都可以推荐更好的方法吗?

4 个答案:

答案 0 :(得分:3)

data.table相比,IMO dplyr可能更难习惯,但是当您需要强大的分析时,它会在以后保存您的尾巴:

setDT(airquality)[, shift(Wind, n=2L, type="lag") < Wind]

在基础R中,您可以添加NA值并删除最后一个用于比较:

with(airquality, c(NA,head(Wind,-1)) < Wind)

答案 1 :(得分:1)

您需要哪种比较?

例如,要检查followonf值是否更大,您可以使用:

library(dplyr)
with(airquality, lag(Wind) < Wind)

或者有两个滞后:

with(airquality, lag(Wind, 2) < Wind)

答案 2 :(得分:1)

这取决于您要回答的问题,但我会研究自相关(时间序列与其自身滞后值的相关性)。您可能希望查看acf()函数以将时间序列与自身进行比较,因为这将有助于突出显示哪些滞后显着相关。

或者如果你想比较2个不同的指标(例如风和温度),那么你可能想尝试ccf()函数,因为它允许你输入2个不同的向量,它将计算与滞后的互相关。例如:

session.FlushMode

答案 3 :(得分:1)

如果您对自相关或互相关感兴趣,那么您可能还会考虑互信息之类的东西,这也适用于非高斯数据。 infotheo的{​​{1}}和entropymore here)软件包都具有内置函数。