我正在研究R中的数据集,其时间变量如下:
Time = data.frame("X1"=c(930,1130,914,1615))
X1的前一个/两个数字表示小时,后两个指的是分钟。我想让R将其识别为时间变量。
我尝试使用lubridate hm函数,但它不起作用可能是因为":"在我的数据中,小时和分钟之间缺失。
我还考虑过使用str_sub函数先将小时和分钟分开,然后将它们与":"介于两者之间并最终使用了lubridate函数,但我不知道如何提取小时,因为有时它会以一位数字显示,但有时会显示为两位数。
如何让R将此识别为时间变量? 非常感谢!
答案 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