我正在尝试做一些看起来很简单的事情,但它证明了一些挑战,所以我希望有人能够提供帮助!
我有一个时间序列温度的观测:基于平均月份和滚动数据的值之间的差异
Lines <-"1971-01-17 298.9197
1971-01-17 298.9197
1971-02-16 299.0429
1971-03-17 299.0753
1971-04-17 299.3250
1971-05-17 299.5606
1971-06-17 299.2380
2010-07-14 298.7876
2010-08-14 298.5529
2010-09-14 298.3642
2010-10-14 297.8739
2010-11-14 297.7455
2010-12-14 297.4790"
DF <- read.table(textConnection(Lines), col.names = c("Date", "Value"))
DF$Date <- as.Date(DF$Date)
mean.ts <- aggregate(DF["Value"], format(DF["Date"], "%m"), mean)
这将产生:
> mean.ts
Date Value
1 01 1.251667
2 02 1.263333
这仅仅是一个例子 - 我的数据是多年的,所以我可以计算出一个完整的月平均的数据。
然后我想要做的就是计算1月份(单独)与上面计算的1月份平均值的差值。
如果我离开使用日期/时间类,我可以做一些循环,但我想看看是否有一个“简洁”的方式来做到这一点在R?有任何想法吗?
我清理了一下你的代码,但无法得到你所说的'mean.ts'(即值刚刚超过1)。 – James
小提示。从2.14开始,'read.table'有一个'text'参数。 –
你也可以使用'as.POSIXlt(DF [[Date]]] $ mon'虽然'format'仍然更容易IMO。 –