我从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
Run Code Online (Sandbox Code Playgroud)
Jos*_*ich 10
你可以使用ISOdatetime,这只是一个简单的包装器as.POSIXct.确保将sec参数指定为零.
Data$timestamp <- with(Data, ISOdatetime(YY,MM,DD,hh,mm,0))
Run Code Online (Sandbox Code Playgroud)
是的,您希望将日期时间列粘贴在一起,然后将该完整字符串强制转换为日期时间对象.
dat <- within(dat, datetime <- as.POSIXlt(paste(yr, mo, dy, hr, mn),
format = "%Y %m %d %H %M"))
Run Code Online (Sandbox Code Playgroud)
假设dat是包含浮标数据的对象.这会添加一个新列,它是一个"POSIXlt"类对象,as.POSIXct()如果您更喜欢其他格式,则可以使用它.
或者,查看文件后可以使用它们的列名:
dat <- within(dat, datetime <- as.POSIXlt(paste(YY, MM, DD, hh, mm),
format = "%Y %m %d %H %M"))
Run Code Online (Sandbox Code Playgroud)