承认R的时间

时间:2018-04-21 23:48:28

标签: r datetime lubridate

我正在研究R中的数据集,其时间变量如下:

Time = data.frame("X1"=c(930,1130,914,1615))

X1的前一个/两个数字表示小时,后两个指的是分钟。我想让R将其识别为时间变量。

我尝试使用lubridate hm函数,但它不起作用可能是因为":"在我的数据中,小时和分钟之间缺失。

我还考虑过使用str_sub函数先将小时和分钟分开,然后将它们与":"介于两者之间并最终使用了lubridate函数,但我不知道如何提取小时,因为有时它会以一位数字显示,但有时会显示为两位数。

如何让R将此识别为时间变量? 非常感谢!

2 个答案:

答案 0 :(得分:1)

您可以使用标准R日期工具进行0-pad到4位数字格式化:

as.POSIXct(sprintf("%04d",Time$X1), format="%H%M")
#[1] "2018-04-22 09:30:00 AEST" "2018-04-22 11:30:00 AEST"
#[3] "2018-04-22 09:14:00 AEST" "2018-04-22 16:15:00 AEST

答案 1 :(得分:1)

将它们转换为chron "times"类。在内部,这些变量存储为一天的一小部分,并在输出上呈现,如下所示。 sub在最后2个字符前插入:,在:00后插入times,以便library(chron) times(sub("(..)$", ":\\1:00", Time$X1)) ## [1] 09:30:00 11:30:00 09:14:00 16:15:00 理解为HH:MM:SS格式。

with(Time, times( (X1 %/% 100) / 24 + (X1 %% 100) / (24 * 60) ))
## [1] 09:30:00 11:30:00 09:14:00 16:15:00

也可以这样做,我们将每个变换为一天的一小部分:

git add --patch