我正在寻找一种更好的方法来比较一天(第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天或者我想切换Wind
和Temp
并以另一种方式查看它们,我需要创建另一个数据框。这看起来很笨重。任何人都可以推荐更好的方法吗?
答案 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}}和entropy
(more here)软件包都具有内置函数。