我总是对此感到厌烦,所以我觉得现在是时候问一些帮助......
我尝试制作一个可重复的示例,但由于某种原因,我无法以%m-%d格式获得我的x $ monthday :(。
x<-data.frame(seq(as.POSIXct('2012-10-01'), as.POSIXct('2015-03-01'), by= "day"))
names(x)<- "date"
x$month<- months(x$date)
x$monthday<- as.POSIXct(x$date, format= "%m-%d")
x1<- x[x$month== 'October' |x$month== 'November' | x$month== 'December' |x$month== 'January'|x$month== 'February', ]
y<- 1: nrow(x1)
x2<-cbind(x1, y)
x3<- aggregate(list(y=x2$y), list(monthday=x2$monthday), mean)
plot(x3$monthday, x3$y)
日期的格式为%m /%d,是10月至3月的时间序列。 R从1月到12月精美地命令轴,这导致两者之间存在很大差距,因为我的数据范围从10月到3月。
如何在十月到三月的表格中制作我的x轴顺序?
非常感谢你。
答案 0 :(得分:0)
library(dplyr)
library(ggplot2)
library(lubridate)
# Fake data
dat <- data.frame(date=seq(as.POSIXct('2012-10-01'), as.POSIXct('2015-03-01'), by="day"))
set.seed(23)
dat$temperature = cumsum(rnorm(nrow(dat)))
# Subset to October - March
dat <- dat[months(dat$date) %in% month.name[c(1:2,10:12)], ]
# Calculate mean daily temperature
dat = dat %>% group_by(Month=month(date), Day=day(date)) %>%
summarise(dailyMeanTemp = mean(temperature)) %>%
mutate(newDate = as.Date(ifelse(Month %in% 10:12,
paste0("2014-", Month, "-", Day),
paste0("2015-", Month, "-", Day))))
上面的mutate
函数创建了一个假年,只是为了让我们可以将日期保留在&#34; date&#34;格式并从10月到3月订购。可能有更好的方法(可能是zoo
或xts
包中的函数),但这似乎有效。
ggplot(dat, aes(newDate, dailyMeanTemp)) +
geom_line() + geom_point() +
labs(y="Mean Temperature", x="Month")
或者,在基础图形中:
plot(dat$newDate, dat$dailyMeanTemp)