R语言中统计数据框difftime类型列负值遇问题
问题原因与解决办法
核心问题
你的duration列是difftime类型,当执行trips_2023_tidy$duration < 0时,若原列存在缺失值(NA),生成的逻辑向量会包含NA值。而sum()函数默认会保留NA参与计算,最终结果返回NA。
另外,虽然你用round()处理了时间差,但difftime类型的比较本身是支持的,所以核心矛盾还是缺失值的存在。
解决方法
方法1:忽略缺失值统计
直接在sum()中添加na.rm = TRUE参数,跳过NA值计算:
sum(trips_2023_tidy$duration < 0, na.rm = TRUE)
方法2:转换为数值型后统计
如果不需要保留difftime的时间单位属性,可以先将列转为数值型再统计:
sum(as.numeric(trips_2023_tidy$duration) < 0, na.rm = TRUE)
验证步骤
可以先确认duration列中是否存在缺失值:
sum(is.na(trips_2023_tidy$duration))
内容的提问来源于stack exchange,提问作者gorilla_ballz123
相关产品推荐
相关产品推荐

