我正在使用一个数据框,该数据框有一个名为“持续时间”的变量,其值的格式为:

1h 7m 46s

0h 16m 41s

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

请您参考如下方法:

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

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 

分钟模式被翻译为:以 (^) 零个或多个 (*) 个字符(.) 开头,然后是一个空格 (),后跟 1 个或多个 (+) 数字 ([0-9]),后跟字母 m (m) 后跟零个或多个(*) 个字符(.) 到字符串的末尾($)

奖励:正则表达式中的 (?:.* )? 是一个非捕获组((?: )),它消耗零个或多个(*) 字符 (.) 后跟空格 ()。请注意,因为 (?:.* )? 是一个非捕获组。 \\1 仍然是指数字字符串。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!