R计算两类用户骑行时长均值返回NA及difftime报错如何解决?
问题原因
- 计算返回NA的核心原因是
ride_length列存在缺失值,调用mean()函数时没有添加na.rm = TRUE参数,R默认遇到输入包含NA时会直接返回NA。 - 你看到的difftime类型报错、移除含缺失值行的警告,均是后续对计算结果做可视化时触发的:ggplot2无法自动适配difftime类型的坐标轴尺度,且结果中的NA值会被绘图函数自动过滤,和计算阶段返回NA没有直接关联。
解决方法
第一步:修复统计代码
两种可选方案,按需选择即可:
- 保留difftime类型,仅补充缺失值处理参数
ride_length_mean <- data_trip_cleaned %>% group_by(member_casual) %>% summarise(average_time = mean(ride_length, na.rm = TRUE))
- 先转为指定单位的数值型再计算,避免后续可视化的类型报错(推荐,后续处理更方便)
ride_length_mean <- data_trip_cleaned %>% group_by(member_casual) %>% # units参数可按需改为"secs"、"hours"等指定输出单位 mutate(ride_length_mins = as.numeric(ride_length, units = "mins")) %>% summarise(average_time_mins = mean(ride_length_mins, na.rm = TRUE))
可选前置校验
可先对源数据做异常校验,排除无效数据:
# 查看ride_length列总缺失值数量 sum(is.na(data_trip_cleaned$ride_length)) # 查看是否存在负的异常骑行时长 sum(data_trip_cleaned$ride_length < 0, na.rm = TRUE)
如果存在负时长,可先过滤掉异常值再做统计,避免结果偏差。
内容的提问来源于stack exchange,提问作者Frans_Gel
相关产品推荐
相关产品推荐

