【问题标题】:Create time series from daily temperature data in R从 R 中的每日温度数据创建时间序列
【发布时间】:2021-01-15 16:11:29
【问题描述】:

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

date 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)

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

Jan Feb Mar Apr May June ..
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,因此它不能作为平均值负值。同样的事情适用于所有其他月份。这意味着在我的时间序列中,每个月的列没有每个月的适当平均值,而是其他一些我无法确定它是如何计算的。

我希望通过创建一个时间序列来识别和解决此错误的所有帮助,其中每个值对应于相应年份和月份的平均值。

【问题讨论】:

  • 数据框的strdim是什么?数据是否按时间排序?所有年份都正好有 12 个月吗?请发布您的数据的dput。过去两年(如果订购):dput(tail(temp_data, 24)).

标签: r time-series


【解决方案1】:

首先将数据转换为月度数据。然后将每月的数据转换成一个ts。根据数据转月数据,试试下面的命令:

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

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

【讨论】:

  • 像魅力一样工作!谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多