R语言中新西兰格式日期显示正常但绘图按美式排序的解决方法
解决R语言中新西兰格式日期的排序/绘图问题
这个问题太常见了——看起来你的日期列目前是字符类型,而不是R能理解的日期对象!R默认会把像7/01/00这样的字符串当成美式的「月/日/年」来解析,所以排序和绘图时才会搞反日和月的顺序。
解决起来很简单,只需要把字符型日期转换成R的标准Date类型,明确告诉R你的日期格式是「日/月/年」:
转换日期格式
使用as.Date()函数,指定format参数为"%d/%m/%y"(%d代表日,%m代表月,%y代表两位年份):# 把字符日期转为Date类型 pHAuckOtehaStream$Date <- as.Date(pHAuckOtehaStream$Date, format = "%d/%m/%y")如果你的年份是四位(比如
7/01/2000),就把格式改成"%d/%m/%Y"(大写Y对应四位年份)。验证转换结果
打印转换后的日期,会看到R用标准的「年-月-日」格式显示,这说明它已经正确识别了时间顺序:pHAuckOtehaStream$Date[164:175]输出应该类似:
"2000-01-07" "2000-02-01" "2000-03-07" ...排序与绘图的正确处理
现在日期是真正的时间对象,不管是直接排序还是用绘图工具(比如ggplot2),都会按照正确的时间顺序来展示。如果需要在绘图时让X轴还是显示成「日/月/年」的新西兰格式,可以用scale_x_date()指定标签格式:library(ggplot2) ggplot(pHAuckOtehaStream, aes(x = Date, y = 你的数值列)) + geom_line() + scale_x_date(date_labels = "%d/%m/%y") # 自定义日期显示格式
这样处理后,排序和绘图就都会按真实的时间顺序来啦!
内容的提问来源于stack exchange,提问作者Hannah
相关产品推荐
相关产品推荐

