首页 > 解决方案 > R 几年的天数趋势

问题描述

我想用这个测试框架计算不同类型的趋势。

date_list = seq(ymd('2000-01-15'),ymd('2010-09-18'),by='day')
testframe = data.frame(Date = date_list)
testframe$Day = substr(testframe$Date, start = 6, stop = 10)
testframe$V1 = runif(3900, 2.0, 35.0)
testframe$V2 = runif(3900, 5.0, 40.0)
testframe$V3 = runif(3900, -10.0, 10.0)
testframe$V4 = seq(from = 5, to = 45, length.out = 3900)

我有一个包含确切日期的日期列。days 列包含提取的日期和月份,然后我有 4 个具有不同值的列。

我想做两件不同的事情:

  1. 计算多年来每一天的值的趋势。所以最后我只有一列,每一天(没有年份),然后是每一天的值 V1-V4 的斜率。应计算 2000 年至 2010 年的每一天的斜率。

  2. 与上面相同,但这次我不仅要计算每一天的斜率,还要取每一天前 15 天和后 15 天的值的平均值。因此,对于例如 2000-02-01 的值的斜率,我想要从 2000-01-17 到 2000-02-16 的所有值的平均值。在我有了这些天的平均值之后,我想做和上面一样的事情。

到目前为止,我唯一的努力是创建“Day”列以将其用于aggregate命令……但到目前为止它并没有带我到任何地方。

更新:我发现了一个不错的包TTR,其中包含一个移动平均函数。这就是我需要的。我只是没有找到如何将它用于几列:

library(TTR)
mavg.15day = SMA(testframe$V1, n=15)

不幸的是,它只使用每个日期前的 15 天。

标签: rdatelmlubridatetrend

解决方案


推荐阅读