我正在根据几年每小时数据的数据框(球)制作风速的昼夜循环。我想按季节绘制它们,所以我将需要的日期子集出来并像这样加入它们:
b8 = subset(ball, as.Date(date)>="2008-09-01 00:00:00, GMT" & as.Date(date)<= "2008-11-30 23:00:00, GMT" )
b9 = subset(ball, as.Date(date)>="2009-09-01 00:00:00, GMT" & as.Date(date)<= "2009-11-30 23:00:00, GMT" )
b10 = subset(ball, as.Date(date)>="2010-09-01 00:00:00, GMT" & as.Date(date)<= "2010-11-30 23:00:00, GMT")
ballspr = rbind(b8,b9,b10)
然后我使用这个得到一个昼夜循环:
sprwsdiurnal <- aggregate(ballspr["ws"], format(ballspr["date"],"%H"),summary, na.rm=T)
在四分之三的季节中,这使对象具有以下结构:
date ws
1 00 0.200, 1.000, 1.600, 2.021, 2.500, 8.000, 5.000
2 01 0.100, 1.000, 1.600, 1.988, 2.500, 8.600, 1.000
3 02 0.100, 1.000, 1.700, 1.982, 2.600, 8.900, 1.000
...到 24 小时...
23 22 0.100, 1.200, 1.800, 2.222, 2.950, 9.100, 1.000
24 23 0.100, 1.000, 1.600, 2.072, 2.700, 8.800, 1.000
这就是我想要的,因为 boxplot 可以使用:
par( mar = c(5, 5, 2, 2))
boxplot(sprwsdiurnal$ws, col="dodger blue",pch=16,font.lab=2,cex.lab=1.5,cex.axis=2,xlab="Hour",range=0, ylab=quote(Windspeed ~ "(" * m ~ s ^-1 * ")"),xaxt="n",main="Spring")
axis(1, at=seq(1,24, by=1),labels=seq(1,24, by=1),cex.axis=1.5, cex.lab=1.5, font.lab=2)
麻烦的是一个赛季是这样出来的:
date ws.Min. ws.1st Qu. ws.Median ws.Mean ws.3rd Qu. ws.Max. ws.NA's
1 00 0.000 1.300 2.100 2.539 3.200 10.500 2.000
2 01 0.100 1.275 2.100 2.499 3.200 9.800 2.000
3 02 0.200 1.200 2.000 2.514 3.400 9.000 2.000
...到 24 小时...
23 22 0.100 1.200 1.950 2.582 3.325 11.900 2.000
24 23 0.100 1.300 2.000 2.585 3.400 11.200 2.000
Boxplot 不适用于这种格式。我无法解释为什么会发生这种情况,因为每个季节的所有代码都是相同的,并且它们是从同一个数据帧中提取的子集。为什么一个出来的不一样?任何想法表示赞赏。
编辑:这是数据。我检查了这两个赛季,他们仍然给出了上面显示的两种不同的格式。
https://www.dropbox.com/s/v5kss0bgjyhrtw1/ball.csv
ball=read.csv("ball.csv", header=T)
ball$date = as.POSIXct(strptime(ball$date, format = "%Y-%m-%d %H:%M:%S", "GMT"))
win9 = subset(ball, as.Date(date)>="2009-06-01 00:00:00, GMT" & as.Date(date)<= "2009-08-31 23:00:00, GMT" )
aut9 = subset(ball, as.Date(date)>="2009-03-01 00:00:00, GMT" & as.Date(date)<= "2009-05-31 23:00:00, GMT" )
spr9 = subset(ball, as.Date(date)>="2009-09-01 00:00:00, GMT" & as.Date(date)<= "2009-11-30 23:00:00, GMT" )
sum9 = subset(ball, as.Date(date)>="2008-12-01 00:00:00, GMT" & as.Date(date)<= "2009-02-28 23:00:00, GMT" )
sprdiurnal <- aggregate(spr9["ws"], format(spr9["date"],"%H"),summary, na.rm=T)
par( mar = c(5, 5, 4, 2))
boxplot(sprdiurnal$ws, col=colours()[109],pch=16,cex.lab=1.5,cex.axis=1.5,xlab="Hour",range=0, ylab=quote(Wind ~ speed ~ "(" * m * "s" ^-1 * ")"),xaxt="n",main="")
axis(1, at=seq(1,24, by=1),labels=seq(1,24, by=1),cex.axis=1.5, cex.lab=1.5)
windiurnal <- aggregate(win9["ws"], format(win9["date"],"%H"),summary, na.rm=T)
par( mar = c(5, 5, 4, 2))
boxplot(windiurnal$ws, col=colours()[109],pch=16,cex.lab=1.5,cex.axis=1.5,xlab="Hour",range=0, ylab=quote(Wind ~ speed ~ "(" * m * "s" ^-1 * ")"),xaxt="n",main="")
axis(1, at=seq(1,24, by=1),labels=seq(1,24, by=1),cex.axis=1.5, cex.lab=1.5)