[英]Converting date variable as character to numeric in r
我有一个带有时间段列的数据框,该时间段另存为字符并采用以下格式:
x
[1] "00:17:31.199" "1 day 01:37:46.22" "00:43:11.51" "01:18:37.721" ...
我想将此列的值转换为小时(和小时小数点)31 /,以便返回的列为
[1] 0.28 25.61 0.71 1.3 ...
其中0.28是17/60小时,而25.61等于24 + 1 + 37/60。 请注意,所有内容均另存为字符。 我在baseR或lubridate中找不到任何命令可以解决这个问题。 有什么帮助吗?
因此,我最终基于@ Mako212和@thelatemail进行了以下操作:
days <- gsub("(\\d+)(?=\\sday).*", "\\1", x, perl=TRUE) # extracting the number of days
hours <- gsub(".*(\\S*\\s+\\S+)", "\\1", x, perl=TRUE) # getting rid of days
ind <- grep("(\\d+)(?=\\sday).*", x, perl=TRUE) # getting the indices of elements that have days
然后,我使用as.difftime
来计算以小时为单位的时差。
time.hours <- as.difftime(x, format="%H:%M:%OS", units="hours")
现在,我需要以小时为单位计算在矢量days
中提取的days
,并将其添加到time.hours
。
for (i in ind) {
time.hours[ind] <- as.numeric(days[ind])*24 +
as.difftime(hours[ind], format="%H:%M:%OS", units="hours")
}
请注意,执行上述循环可能会有更有效的方法,但这就是我的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.