如何将hhmmss格式时长列转为秒?hms/difftime类型处理遇阻求助
解决hms/difftime类型时长转秒数及均值计算问题
转秒数的正确方法
你的时长列是hms+difftime类型,别用period_to_seconds——那是lubridate里给Period类型用的,和你的列类型不兼容,直接用as.numeric()就能转成秒数:
# 假设列名为duration,生成对应的秒数列 df$duration_sec <- as.numeric(df$duration, units = "secs")
转完后就是纯数值格式,后续计算、分析都没问题。
解决均值返回NA的问题
计算均值得到Time difference of NA secs,基本是因为列里存在NA值,计算时跳过NA就行:
# 先检查NA数量 sum(is.na(df$duration)) # 计算均值时忽略NA mean(df$duration, na.rm = TRUE)
要是觉得时间差格式的均值看着别扭,转成秒数后再算均值会更直观。
关于period_to_seconds报错的原因
period_to_seconds()是专门处理lubridate的Period类对象的,而你的列是hms/difftime类(不是S4对象),两者不匹配,所以才会报错,换用上面的方法就好。
内容的提问来源于stack exchange,提问作者Walter H T
相关产品推荐
相关产品推荐

