我有一个数据集,其中包含一个带有时间段的字符变量,写成这样:
16 sec
1 min, 35 sec
45 sec
3 min, 42 sec
以此类推。
在秒或分钟内将其更改为数字变量的最快方法是什么?
我不能只用min
删除单词sec
和regexr
,因为变量的含义只有几秒钟,没有分钟,而且我也不知道如何在插补后的几分钟内将它们分离。
感谢您的帮助!
答案 0 :(得分:3)
使用lubridate
软件包
x <- c("16 sec", "1 min, 35 sec", "45 sec", "3 min, 42 sec")
library(lubridate)
as.numeric(as.duration(x))
# [1] 16 95 45 222
答案 1 :(得分:2)
这是您的数据:
df <- data.frame(time.string=c("16 sec",
"1 min, 35 sec",
"45 sec",
"3 min, 42 sec"))
现在,您可以通过将min
转换为*60
,将,
转换为+
并删除{{ 1}}。
sec
哪个会给您以下结果:
df$time.expr <- gsub(", ", "+", gsub(" min", "*60", gsub(" sec", "", df$time.string)))
现在,您可以像这样评估结果表达式:
# time.expr
#1 16
#2 1*60+35
#3 45
#4 3*60+42
哪个会给你这个输出:
df$time.int <- sapply(parse(text=time.expr), eval)
希望有帮助。