首页 > 解决方案 > 将数据转换为时间序列

问题描述

我有一个 csv 数据集,我想将其转换为时间序列数据以进行时间序列分析。数据看起来像这样(有额外的列,有 17,190 obs。):

temp  interval

   10.0  2014-04-01 00:00:00

   10.0  2014-04-01 00:15:00

   10.0  2014-04-01 00:30:00

   10.0  2014-04-01 00:45:00

   7.8   2014-04-01 01:00:00

间隔列的POSIXct格式。

我将不胜感激有关将其转换为时间序列的代码的帮助。

谢谢

标签: rdataframedatasettime-seriesposixct

解决方案


如果您使用read_csvin读取 csv,tidyverse您将自动获得 POSIXct 类中的间隔列。

dput以下:

library(tidyverse)

df <- structure(list(temp = c(10, 10, 10, 10, 7.8), interval = structure(c(1396310400, 
1396311300, 1396312200, 1396313100, 1396314000), class = c("POSIXct", 
"POSIXt"), tzone = "UTC")), class = c("spec_tbl_df", "tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -5L), spec = structure(list(
cols = list(temp = structure(list(), class = c("collector_double", 
"collector")), interval = structure(list(format = ""), class = c("collector_datetime", 
"collector"))), default = structure(list(), class = c("collector_guess", 
"collector")), skip = 1), class = "col_spec"))

然后,您可以重新排序 cols 并转换为 zoo。

library(zoo)

df <- df %>% 
  select(interval, temp) %>% 
  zoo()

class(df)
[1] "zoo"

推荐阅读