Str*_*hmi 6 split r date boxplot
我想为很多不同的时间序列制作季节性的箱形图.我希望下面的代码清楚地说明了我想要做的事情.
我现在的问题是,如何以尽可能少的代码行以最优雅的方式完成此操作.我可以使用函数"subset"为每个月创建一个新对象,然后绘制它,但这似乎不是很优雅.我试图使用"拆分"功能,但我不知道,如何从那里开始.
请告诉我,如果我的问题没有明确说明或编辑,以使其更清楚.
非常感谢任何直接帮助或与其他网站/帖子的链接.谢谢你的时间.
这是代码:
## Create Data
Time <- seq(as.Date("2003/8/6"), as.Date("2011/8/5"), by = "2 weeks")
data <- rnorm(209, mean = 15, sd = 1)
DF <- data.frame(Time = Time, Data = data)
DF[,3] <- as.numeric(format(DF$Time, "%m"))
colnames(DF)[3] <- "Month"
## Create subsets
Jan <- subset(DF, Month == 1)
Feb <- subset(DF, Month == 2)
Mar <- subset(DF, Month == 3)
Apr <- subset(DF, Month == 4)
## Create boxplot
months <- c("Jan", "Feb", "Mar", "Apr")
boxplot(Jan$Data, Feb$Data, Mar$Data, Apr$Data, ylab = "Data", xlab = "Months", names = months)
## Try with "split" function
DF.split <- split(DF, DF$Month)
head(DF.split)
Run Code Online (Sandbox Code Playgroud)
使用'ggplot2'(以及@James的月份名称,谢谢!):
DF$month <- factor(strftime(DF$Time,"%b"),levels=month.abb)
ggplot(DF, aes(x=,month, y=Data)) +
geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

(顺便说一句:请注意'ggplot2'" 上部和下部"铰链"对应于第一和第三四分位数(第25和第7个百分位数).这与boxplot函数使用的方法略有不同,并且可能很明显样品. " - 见文件)
您最好直接使用"%b"格式选择月份名称,并使用有序因子和公式界面boxplot:
DF$month <- factor(strftime(DF$Time,"%b"),levels=month.abb)
boxplot(Data~month,DF)
Run Code Online (Sandbox Code Playgroud)
