我从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
答案 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"))