日期和时间在单独的列中,转换为R中的日期时间

时间:2012-01-17 15:04:14

标签: r date

我从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

2 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:5)

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

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"))