我在一个数据框中有一个 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,因此它不能作为平均值为负值。同样的事情适用于所有其他月份。这意味着在我的时间序列中,每个月列没有每个月的适当平均值,而是其他一些我无法确定它是如何计算的。
通过创建一个时间序列来识别和解决这个错误,我将不胜感激,其中每个值都对应于相应年份和月份的平均值。
答案 0 :(得分:1)
先将数据转换为月度数据。然后将月度数据转化为ts。根据将数据转换为月度数据,尝试以下命令:
df %>%
group_by(month = floor_date(date, "month")) %>%
summarize(temp = mean(temp))
将此 df 保存到一个变量中,然后将其转换为 ts。我希望这对你有用。