【问题标题】:Convert Data Frame in R to Time Series - DATE HOUR FORMATTING将 R 中的数据帧转换为时间序列 - 日期时间格式
【发布时间】:2014-09-13 16:06:34
【问题描述】:

我有从 7 月到 9 月按日期时间计算的三个季度的数据,即 07/01/2013 0:00 和 07/01/2013 1:00。我应该有最大可能的 92 * 24 = 2208 观察。出于某种原因,我的一些数据框中有超过 2208 个观察值。

这是我的数据框的输入

dput(head)
structure(list(DATEHOUR = c("07-01-13 0:00", "07-01-13 10:00", 
"07-01-13 11:00", "07-01-13 12:00", "07-01-13 13:00", "07-01-13 14:00"
), ImpressionsA.x = c(156, 564, 884, 1365, 1864, 1470), ImpressionsM.x = c(83, 
274, 338, 664, 807, 757), ImpressionsA.y = c(0.4, 0, 0.4, 0, 
0, 0), ImpressionsM.y = c(0.2, 0, 0.3, 0, 0, 0), Branded = c(0, 
0, 0, 0, 0, 0), ESI = c(0, 0, 0, 0, 0, 0), ImpressionsA.T = c(156.4, 
564, 884.4, 1365, 1864, 1470), ImpressionsM.T = c(83.2, 274, 
338.3, 664, 807, 757), Leads.T = c(0, 0, 0, 0, 0, 0)), .Names = c("DATEHOUR", 
"ImpressionsA.x", "ImpressionsM.x", "ImpressionsA.y", "ImpressionsM.y", 
"Branded", "ESI", "ImpressionsA.T", "ImpressionsM.T", "Leads.T"
), row.names = c(1L, 3L, 4L, 5L, 6L, 7L), class = "data.frame")

我阅读了以下帖子和链接http://astrostatistics.psu.edu/su07/R/html/base/html/strptime.htmlformat a Date column in a Data FrameConvert data frame with date column to timeseries 并尝试这样做:test$timestamp<-as.Date(as.character(test$DATEHOUR), format="%m%d%Y%I%M") 和组合,但它不起作用。我的目标是按时间序列获得 2208 个(或任何不重复的观察结果)。我是 R 和编码的新手,所以请原谅我的新手语法理解。

【问题讨论】:

  • 所以您阅读了?strptime,但决定使用as.Date
  • @JoshuaUlrich 就像我说的,我以前没有在 R 上处理过时间序列数据,我对 R 处理日期时间的多种方式感到困惑。这个练习帮助我了解了?POSIXct?Lubridate?strptime。由于我的数据的特殊性质,特别是最初用 EXCEL 制作的 CSV 文件的日期格式,我将更详细地编辑我的问题!

标签: r datetime dataframe time-series posixct


【解决方案1】:

试试这个:

> as.POSIXct(dd$DATEHOUR, format="%m-%d-%y %H:%M")
[1] "2013-07-01 00:00:00 PDT" "2013-07-01 10:00:00 PDT" "2013-07-01 11:00:00 PDT" "2013-07-01 12:00:00 PDT"
[5] "2013-07-01 13:00:00 PDT" "2013-07-01 14:00:00 PDT"

【讨论】:

    【解决方案2】:

    如果懒得手动写格式,可以试试lubridate

    library(lubridate)
    mdy_hm(df$DATEHOUR)
    
    ## [1] "2013-01-07 00:00:00 UTC" "2013-01-07 10:00:00 UTC" "2013-01-07 11:00:00 UTC"
    ## [4] "2013-01-07 12:00:00 UTC" "2013-01-07 13:00:00 UTC" "2013-01-07 14:00:00 UTC"
    

    【讨论】:

    • 好吧,我遇到了一个奇怪的问题。我运行这个:require(lubridate) df$DATEHOUR2<-dmy_hm(df$DATEHOUR),除了我的一些约会完全乱套之外,它可以解决问题。例如:07-17-13 02:00 正在变为 2047-07-21 13:24:48。另一个例子: 07-16-13 11:00 正在变成 2013-01-07 11:00:00 。我的 CSV 文件很干净 - 没有空格。我的日期时间变量属于类:字符。挠头!
    • 查看编辑,我以为日子是第一位的,而实际上是几个月。
    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多