如何从strptime()中提取时间?

时间:2017-01-10 06:57:04

标签: r time strptime

部分数据如下:

head(my_data[,c(1,2)], 3)
       Date Time 
1 16/12/2006 17:24:00 
2 16/12/2006 17:25:00 
3 16/12/2006 17:26:00

顺便说一句,str() $Date, $Time现在都是chr。

我想将它们保存在格式正确的两个列中,所以我使用

x <- as.Date(my_data$Date, "%d/%m/%Y")

获取日期格式的第一个col:

x[1:5]
[1] "2006-12-16" "2006-12-16" "2006-12-16" "2006-12-16" "2006-12-16"  

但是在第二场比赛中,当我试图使用

y <- strptime(my_data$Time, "%H:%M:%S")

输出会自动添加计算机的默认日期和时区。

y[1:4]
[1] "2017-01-10 17:24:00 CST" "2017-01-10 17:25:00 CST" 
[2] "2017-01-10 17:26:00 CST" "2017-01-10 17:27:00 CST"

如果我只想保留时间,没有日期和时区,我该怎么办? 带有正则表达式的sub()是实现此目的的唯一方法吗?

2 个答案:

答案 0 :(得分:2)

我们可以使用sub来提取时间&#39;成分

sub(".*\\s+", "",  y)
#[1] "17:24:00" "17:25:00" "17:26:00"

如果我们想要time课程,请使用times

中的chron
library(chron)
times(my_data$Time)
#[1] 17:24:00 17:25:00 17:26:00

答案 1 :(得分:1)

我们可以使用format来提取时间组件

format(strptime(y, "%H:%M:%S"),"%H:%M:%S")

使用lubridate

的另一种选择
library(lubridate)
hms(my_data$Time)