从 R 中的每日温度数据创建时间序列

时间:2021-01-15 16:11:29

标签: r time-series

我在一个数据框中有一个 24 年的数据集(从 1/1/1980 到 31/12/2014),其中包含每日温度数据。 我的数据框的形式如下:

<头>
日期 st1
1980-1-1 -2.3
1980-1-2 -1.2
1980-1-3 0.8
... ...
2014-12-31 4.7

(“...”代表从 1980 年到 2014 年的数据序列) 为了使用时间序列包,我需要在时间序列类中转换数据帧。我使用了以下代码:

temp_ts <- ts(temp_data$st1,start = c(1980,1,1), end = c(2014,12,31),frequency = 12)

我得到了一个完整的时间序列,每列标题中包含所有月份,表格形式的每行中包含年份,如下所示:

<头>
一月 二月 三月 四月 五月 六月 ..
1980 1.8 -1.0 -4.8 -5.2 -3.1 ..
1981 -5.0 -5.2 -3.8 -0.5 0.3 0.2 ..
... ... ... ... ... ... ... ...
2014 5.3 6.3 -1.7 -4.3 -6.7 -4.7 ..

(我的表中没有“...”,我只是在这里使用它以节省一些空间)

问题是这个时间序列中的数据是错误的。更具体地说,在 5 月份,我的原始数据中的温度 >20 C,因此它不能作为平均值为负值。同样的事情适用于所有其他月份。这意味着在我的时间序列中,每个月列没有每个月的适当平均值,而是其他一些我无法确定它是如何计算的。

通过创建一个时间序列来识别和解决这个错误,我将不胜感激,其中每个值都对应于相应年份和月份的平均值。

1 个答案:

答案 0 :(得分:1)

先将数据转换为月度数据。然后将月度数据转化为ts。根据将数据转换为月度数据,尝试以下命令:

df %>%
group_by(month = floor_date(date, "month")) %>%
summarize(temp = mean(temp))

将此 df 保存到一个变量中,然后将其转换为 ts。我希望这对你有用。