如何从 strptime() 中仅提取时间?
How to extract ONLY time from 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")
以日期格式获取第一列:
x[1:5]
[1] "2006-12-16" "2006-12-16" "2006-12-16" "2006-12-16" "2006-12-16"
但是在第 2 列中,当我尝试使用
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()
使用一些正则表达式是实现此目的的唯一方法吗?
我们可以使用sub
提取'time'分量
sub(".*\s+", "", y)
#[1] "17:24:00" "17:25:00" "17:26:00"
如果我们想要 time
class,请使用 chron
中的 times
library(chron)
times(my_data$Time)
#[1] 17:24:00 17:25:00 17:26:00
我们可以使用format
来提取时间分量
format(strptime(y, "%H:%M:%S"),"%H:%M:%S")
另一种选择lubridate
包
library(lubridate)
hms(my_data$Time)
部分数据如下:
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")
以日期格式获取第一列:
x[1:5]
[1] "2006-12-16" "2006-12-16" "2006-12-16" "2006-12-16" "2006-12-16"
但是在第 2 列中,当我尝试使用
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()
使用一些正则表达式是实现此目的的唯一方法吗?
我们可以使用sub
提取'time'分量
sub(".*\s+", "", y)
#[1] "17:24:00" "17:25:00" "17:26:00"
如果我们想要 time
class,请使用 chron
times
library(chron)
times(my_data$Time)
#[1] 17:24:00 17:25:00 17:26:00
我们可以使用format
来提取时间分量
format(strptime(y, "%H:%M:%S"),"%H:%M:%S")
另一种选择lubridate
包
library(lubridate)
hms(my_data$Time)