R语言新增ride_length列计算骑行时长遇时间格式报错求助
问题根因
报错是因为started_at和ended_at目前为字符类型,difftime函数无法直接识别日/月/年 时:分这种非标准时间字符串,需要先将两列转换为R可识别的时间格式后再计算时长。
解决步骤
- 第一步:转换两个时间列为POSIXct时间格式
你给出的样本时间结构为日/月/年 时:分,对应格式参数为"%d/%m/%Y %H:%M",转换代码如下:
data_trip_cleaned$started_at <- as.POSIXct(data_trip_cleaned$started_at, format = "%d/%m/%Y %H:%M") data_trip_cleaned$ended_at <- as.POSIXct(data_trip_cleaned$ended_at, format = "%d/%m/%Y %H:%M")
- 第二步:重新计算骑行时长
注意原代码将开始时间放在difftime第一个参数、结束时间放第二个,会得到负的时长,调整参数顺序即可:
data_trip_cleaned$ride_length <- difftime(data_trip_cleaned$ended_at, data_trip_cleaned$started_at, units = "mins")
可选验证
运行glimpse(data_trip_cleaned)即可查看新增的ride_length列是否符合预期。
内容的提问来源于stack exchange,提问作者Frans_Gel
相关产品推荐
相关产品推荐

