将格式Hh Mm Ss的因子转换为持续时间

Big*_*uss 3 datetime r

我正在使用一个数据框,其中包含一个名为"Duration"的变量,其格式为:

1小时7分46秒

0小时16分41秒

..等等.默认情况下,该列被格式化为"因子",我想知道如何将其转换为实际持续时间.我希望能够计算持续时间的平均值和总和.

Jth*_*rpe 5

您可以按如下方式提取小时,分钟和秒:

x <- c('1h 7m 46s','0h 16m 41s')
hours <- as.numeric(gsub('^(?:.* )?([0-9]+)h.*$','\\1',x))
minutes <- as.numeric(gsub('^.* ([0-9]+)m.*$','\\1',x))
seconds <- as.numeric(gsub('^.* ([0-9]+)s.*$','\\1',x))
duration_seconds <- seconds + 60*minutes + 60*60*hours
Run Code Online (Sandbox Code Playgroud)

分钟的模式转换为:以(^)零(或多)(*)字符(.)开头,后跟空格(), followed by 1 or more(+)数字([0-9]),后跟字母m(m)后跟零或更多(*)字符(.)到字符串的末尾($)

奖励:(?:.* )?正则表达式中的小时数是一个非捕获组((?: )),它消耗零个或多个(*)图表(.)后跟一个空格(). Note that because (?:.* )?是非捕获gruop. \\1仍然引用数字字符串.