【问题标题】:Dates and Times in separate columns, convert to datetime in R单独列中的日期和时间,在 R 中转换为日期时间
【发布时间】:2012-01-17 15:04:14
【问题描述】:

我正在从 NOAA 导入一些数据,它的日期和时间位于不同的列中。我搜索了一种优雅的方法来在我的 R 数据框中附加单个日期时间列,但无法。我发现了一个关于倒数的堆栈交换问题,但不是这个问题。我可以运行一个简单的 as.Date 命令吗?我只是将 read.table 用于下载的文本文件,它只导入 find。

浮标数据在这里: http://www.ndbc.noaa.gov/data/realtime2/51202.txt

>yr mo  dy  hr  mn  degT    m.s m.s.1   m   sec sec.1 degT.1    hPa degC    degC.1  degC.2  nmi hPa.1   ft
>2012   1   16  3   55  MM  MM  MM  1.4 10  7.2 339 MM  MM  23.9    MM  MM  MM  MM

【问题讨论】:

  • 我在输出中假设 2012 年是年份,数据行开头的 1 只是一个示例标识符?
  • 谢谢 Gavin,是的,我更正了。

标签: r date


【解决方案1】:

您可以使用ISOdatetime,它只是as.POSIXct 的简单包装器。确保将 sec 参数指定为零。

Data$timestamp <- with(Data, ISOdatetime(YY,MM,DD,hh,mm,0))

【讨论】:

    【解决方案2】:

    是的,您想将日期时间列粘贴在一起,然后将该完整字符串强制转换为日期时间对象。

    dat <- within(dat, datetime <- as.POSIXlt(paste(yr, mo, dy, hr, mn),
                                              format = "%Y %m %d %H %M"))
    

    假设dat 是包含浮标数据的对象。这会添加一个新列,它是一个“POSIXlt”类对象,或者如果您更喜欢其他格式,您可以使用 as.POSIXct()

    或者,查看文件后,可以使用它们的列名:

    dat <- within(dat, datetime <- as.POSIXlt(paste(YY, MM, DD, hh, mm),
                                              format = "%Y %m %d %H %M"))
    

    【讨论】:

      猜你喜欢
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 2018-08-28
      • 1970-01-01
      • 2018-01-14
      • 2012-08-03
      • 1970-01-01
      相关资源
      最近更新 更多