【问题标题】:Converting data to xts changes the timestamp data将数据转换为 xts 会更改时间戳数据
【发布时间】:2019-08-13 16:49:57
【问题描述】:

我目前正在研究土壤水分,必须从我的时间序列数据中获取每小时和每天的平均值。

当我将数据帧转换为 xts 对象时,时间序列发生了变化,我不知道为什么。

数据框中的数据如下所示:

  time                MC temp

1 2018-06-27 11:30:00 17.1 15.8

2 2018-06-27 11:45:00 17.0 15.8

3 2018-06-27 12:00:00 17.0 15.8

4 2018-06-27 12:15:00 17.0 15.9

5 2018-06-27 12:30:00 17.2 15.9

6 2018-06-27 12:45:00 17.0 16.0

但是当我转换它时,时间戳从 2018-01-09 00:00 开始,并继续进行 5 分钟的时间增量。这是我正在使用的代码:

sm_xts <- xts(sm.data[,2:3], as.Date(sm.data$time))
sm_zoo <- read.zoo(sm.data, index.column = 1)
dat_xts <- as.xts(sm_zoo)

我已经将时间戳转换为 as.POSIXct 类并检查了我的时间序列中的重复项。

> anyDuplicated(sm.data$time)
[1] 0

【问题讨论】:

    标签: r time-series xts


    【解决方案1】:

    您的初始数据输入过程可能存在一些问题。

        df
    #                  time   MC temp
    # 1 2018-06-27 11:30:00 17.1 15.8
    # 2 2018-06-27 11:45:00 17.0 15.8
    # 3 2018-06-27 12:00:00 17.0 15.8
    # 4 2018-06-27 12:15:00 17.0 15.9
    # 5 2018-06-27 12:30:00 17.2 15.9
    # 6 2018-06-27 12:45:00 17.0 16.0
    

    现在日期和时间值作为字符存储在单个变量中

    str(df$time)
    # chr [1:6] "2018-06-27 11:30:00" "2018-06-27 11:45:00" ...
    

    让我们把它转换成真实的日期和时间,以免丢失时间信息:

    strptime(df$time, "%Y-%m-%d %H:%M:%S")
    # [1] "2018-06-27 11:30:00 EEST" "2018-06-27 11:45:00 EEST"
    # [3] "2018-06-27 12:00:00 EEST" "2018-06-27 12:15:00 EEST"
    # [5] "2018-06-27 12:30:00 EEST" "2018-06-27 12:45:00 EEST"
    

    似乎有效。时区可能存在的问题超出了此答案的范围。

    现在让我们将数据框转换为 xts。在完成的 xts 中,我们不需要符号形式的日期和时间。所以我们排除了第一列。

    df2xts <- xts(df[,2:3], order.by=strptime(df$time, "%Y-%m-%d %H:%M:%S"))
    df2xts
    #                 time   MC temp
    # 1 2018-06-27 11:30:00 17.1 15.8
    # 2 2018-06-27 11:45:00 17.0 15.8
    # 3 2018-06-27 12:00:00 17.0 15.8
    # 4 2018-06-27 12:15:00 17.0 15.9
    # 5 2018-06-27 12:30:00 17.2 15.9
    # 6 2018-06-27 12:45:00 17.0 16.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-08
      • 2011-05-16
      • 2013-03-03
      • 1970-01-01
      • 2012-08-19
      • 2021-10-09
      • 2017-04-21
      • 1970-01-01
      相关资源
      最近更新 更多