我正在使用一个数据框,该数据框有一个名为“持续时间”的变量,其值的格式为:
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
仍然是指数字字符串。