从非分隔数据中提取小时分钟

Ric*_*son 0 datetime r

我的仪器数据包含非分隔格式的小时和分钟(例如0, 30, 100, 130, ... 2300, 2300).我想将列转换为POSIXR中的对象(例如,看起来像这样的东西"2016-01-07 11:07:59 EST"),我的第一步是从该列中提取出小时和分钟数据.(我也有相应的朱利安日期和年份列.)

我被绊倒了,因为小时和分钟没有分隔,我无法使用该strptime功能.我使用谷歌和SO搜索(使用SO上的Rdatatime标签),但一直无法找到解决方案.我可以在SO上找到的所有例子(例如,这里这里)的时间和分钟都被诸如之类的东西分开0:30.

这是我的MCVE:

hour <- c(0, 30, 100, 130, 1000, 1030, 2300, 2330)
year <- c(2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007)
day  <- c(2, 2, 2, 2, 2, 2, 2, 2)
strptime(hour, "%h%m")
Run Code Online (Sandbox Code Playgroud)

那么,当我有非分隔数据时,如何提取小时和分钟?

Nic*_*icE 5

您可以使用sprintf将前导0添加到小于4位的小时:

strptime(sprintf("%04d", hour), "%H%M")
Run Code Online (Sandbox Code Playgroud)

然后,您可以将其转换为日期:

as.POSIXct(paste(year,day,sprintf("%04d", hour),sep="-"),format = '%Y-%j-%H%M')
Run Code Online (Sandbox Code Playgroud)