在R中从单独的DAY OF YEAR,Year和Time列创建单个时间戳

时间:2012-11-01 10:41:20

标签: r timestamp gregorian-calendar

我有几个气象变量的时间序列数据集。时间数据记录在三个单独的列中:

  1. 年(例如2012年)
  2. 一年中的某一天(例如261代表闰年的17 - 9月)
  3. 小时:分钟(例如1610)
  4. 有没有办法可以合并三列来在R中创建一个时间戳?我不太熟悉R如何处理Day of Year变量。

    感谢您对此提供任何帮助!

2 个答案:

答案 0 :(得分:3)

你应该使用ISOdatetime。此函数将yeardayhourminute的向量作为输入,并输出表示时间的POSIXct对象。您只需将第三列拆分为两个单独的hour minute列,即可使用该功能。

答案 1 :(得分:3)

看起来timeDate包可以处理格里高利时间框架。我没有亲自使用它,但它看起来很简单。某些方法中有一个shift参数,允许您设置数据的偏移量。

http://cran.r-project.org/web/packages/timeDate/timeDate.pdf

因为你提到过,我以为我会显示实际代码将各个列合并在一起。如果您在单独的列中拥有所需的值,则可以使用paste将它们组合在一起,并使用lubridate::mdy来解析它们。

library(lubridate)

col.month <- "Jan"
col.year <- "2012"
col.day <- "23"

date <- mdy(paste(col.month, col.day, col.year, sep = "-"))

Lubridate是一个很棒的套餐,这里是官方网页:https://github.com/hadley/lubridate

以下是一组很好的例子:http://www.r-statistics.com/2012/03/do-more-with-dates-and-times-in-r-with-lubridate-1-1-0/