繁体   English   中英

在R中将日期变量作为字符转换为数字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM