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

Dav*_*kin 6 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
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)


Rei*_*son 5

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

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)