我有一个数据框,其中我有一个具有运行时值的列作为" 70分钟"或者" 1小时30分钟"和N / A等我想将这些值转换为数字,例如70分钟应该是70分钟,1小时30分钟应该是90分。此外,我想保持N / A不变。
a<- c("70 min", "1 hr 30 Min")
typeof(a)
a <- as.numeric(a)
当我尝试as.numeric时,它将所有内容都转换为NA,一些使用lubridate包的实验也让我很失望。请任何专家建议。
答案 0 :(得分:2)
重复链接对我来说并不特别开胃,所以我将提供以下基于正则表达式的解决方案。假设您的非标准时间戳采用固定且已知的格式,我们可以使用正则表达式来提取各个部分。假设您只有小时和分钟信息,您可以尝试:
a <- c("70 min", "1 hr 30 Min", "Blah")
hrs <- as.numeric(gsub(".*?(\\d+) [Hh]rs?.*", "\\1", a))
hrs[is.na(hrs)] <- 0
min <- as.numeric(gsub(".*?(\\d+) [Mm]in.*", "\\1", a))
min[is.na(min)] <- 0
total <- hrs*60 + min
<强>输出:强>
> min
[1] 0 30 0
> hrs
[1] 0 1 0
> total
[1] 0 90 0