【问题标题】:transform data frame in time series for date type POSIXct转换日期类型 POSIXct 的时间序列中的数据帧
【发布时间】:2018-04-01 15:07:01
【问题描述】:

我有一个包含以下两个变量的数据框: 金额:数字 1213.5 34.5 ... txn_date:POSIXct,格式“2017-05-01 12:13:30”...

我想使用 ts() 将其转换为时间序列。

我开始使用这段代码:

Z

但问题是在 Z 中我丢失了日期。事实上,所有日期都报告为 NA。

我该如何解决? 对于我的分析来说,日期的格式很重要:%Y/%m/%d %H:%M:%S 例如 2017-05-01 12:13:30。我不想删除变量 txn_date 中的时间分量。

感谢您的帮助, 安德烈亚

【问题讨论】:

    标签: dataframe time-series zoo


    【解决方案1】:

    我认为您的问题来自您操作数据框的方式,可以发布更多详细信息吗?

    我想我有一个解决办法。 我使用的数据框:

    > df1
    $data
         value
    1   1.9150
    2   3.1025
    3   6.7400
    4   8.5025
    5  11.0025
    6   9.8025
    7   9.0775
    8   7.0900
    9   6.8525
    10  7.4900
    
    $date
         %Y-%m-%d
    1  1974-01-01
    2  1974-01-02
    3  1974-01-03
    4  1974-01-04
    5  1974-01-05
    6  1974-01-06
    7  1974-01-07
    8  1974-01-08
    9  1974-01-09
    10 1974-01-10
    > class(df1$data$value)
    [1] "numeric"
    > class(df1$date$`%Y-%m-%d`)
    [1] "POSIXct" "POSIXt" 
    

    然后我可以通过调用 zoo 来创建时间序列:

    > Z<-zoo(df1$data,order.by=(as.POSIXct(df1$date$`%Y-%m-%d`)))
    > Z
                 value
    1974-01-01  1.9150
    1974-01-02  3.1025
    1974-01-03  6.7400
    1974-01-04  8.5025
    1974-01-05 11.0025
    1974-01-06  9.8025
    1974-01-07  9.0775
    1974-01-08  7.0900
    1974-01-09  6.8525
    1974-01-10  7.4900
    

    这里重要的是我使用df1$date$%Y-%m-%d 而不仅仅是 df1$date

    事实上,如果我按照你的方式尝试,我也会得到 NA 值:

    > Z<-zoo(df1$data,order.by=as.POSIXct(as.Date(as.character(df1$date),format("%Y-%m-%d"))))
    > Z
         value
    <NA> 1.915
    

    要获取 data$txn_date 的名称,您可以使用以下命令:names(data$txn_date) 并使用您的数据框和名称尝试我的解决方案。

    > names(df1$date)
    [1] "%Y-%m-%d"
    

    【讨论】:

    • 我病了,但是当我回来工作时,我会尝试你的优雅解决方案。
    • 很遗憾,由于数据是保密的,因此我无法向您提供更多详细信息。但是您的解决方案听起来不错。如果有效,我会尽快通知您。
    猜你喜欢
    • 2018-10-07
    • 2020-09-20
    • 2018-11-01
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多