R语言如何将航班到达数据的字符列转换为时间类型以绘制ggplot2图表
解决步骤
首先你的原始数据存在两处需要先清理的问题:
- 国泰航空ETA值存在输入错误:
9=19:30:00 PM里多了冗余前缀9= - 部分时间后缀带
PM,且时间本身已经是24小时制格式,PM属于冗余内容
第一步:清理并转换时间列
用字符串处理先清理脏数据,再用hms包的as_hms转换为时分秒类型,代码如下:
library(tidyverse) library(hms) # 清理数据+转换时间类型 clean_data <- dataset %>% # 去除冗余字符:9= 以及 PM后缀 mutate(Value = str_remove_all(Value, "9=|\\s*PM")) %>% # 转换为hms时间类型 mutate(time_val = as_hms(Value)) # 查看转换后结构 str(clean_data)
转换后的time_val列就是标准的时分秒时间类型,可以直接作为Y轴传入ggplot。
第二步:绘图示例
以航空公司为X轴,时间为Y轴,区分ETA和实际到达时间为例:
ggplot(clean_data, aes(x = flights, y = time_val, color = attribute)) + geom_point(size = 3) + labs(y = "时间", x = "航空公司", color = "时间类型") + # 可选:调整Y轴时间显示格式 scale_y_hms(breaks = hms(hours = seq(9, 21, 2)), labels = scales::label_time(format = "%H:%M")) + theme(axis.text.x = element_text(angle = 45, hjust = 1))
内容的提问来源于stack exchange,提问作者Aswathy Rajan
相关产品推荐
相关产品推荐

