我想为许多不同的时间序列制作季节性箱型图。我希望下面的代码能清楚地说明我想要做什么。
现在我的问题是,如何以尽可能少的代码行以最优雅的方式执行此操作。我可以使用功能“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)
最佳答案
您最好直接使用"%b"
格式并使用有序因子和boxplot
的公式接口(interface)来选择月份名称:
DF$month <- factor(strftime(DF$Time,"%b"),levels=month.abb)
boxplot(Data~month,DF)
关于r - 拆分数据并生成季节性箱形图的最优雅方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12052305/