2012-05-08 192 views
0

我有這樣的每日天氣報告。 我想要的是計算最大值,最小值和觀測溫度的月平均值,然後繪製這三條線。我已經轉換日期格式是這樣的:如何計算月平均值?

Date = as.POSIXlt(Weather2011$Date, format = "%m/%d/%Y") 
Year = as.numeric(format(Date, format = "%Y")) 
Month = as.numeric(format(Date, format = "%m")) 
Week = as.numeric(format(Date, format = "%U")) 
Weekday = as.numeric(format(Date, format = "%w")) 

Weather2011看起來是這樣的:

Date  Max.Temp Min.Temp Temp Date  Year Month Week Weekday 
6/3/2010 87  63  63 2010-06-03 2010 6  22 4 
6/4/2010 83  63  73 2010-06-04 2010 6  22 5 
+3

你能提供一個小的重複的例子,數據集? – Dason

+1

您似乎刪除了示例數據圖片的鏈接,而是發佈了第一行的格式不正確的版本。你也完全刪除了你的實際問題。如果你想得到一個體面的答案,請更新你的問題。 – Dason

+0

謝謝你,這是我的第一個問題,對不起。 – EskimoT

回答

3

我發現tapply效果很好。防爆。

x <- seq(from=as.Date("2000-01-01"), to=as.Date("2004-12-31"), by="day") 
y <- sin(seq(from=0, to=2*pi*5,length.out=length(x)))+rnorm(length(x)) 
yyyymm <- paste(format(as.POSIXlt(x), format="%Y-%m"), "01", sep="-") 
MEAN <- tapply(y, yyyymm, mean) 
MAX <- tapply(y, yyyymm, max) 
MIN <- tapply(y, yyyymm, min) 
#plots 
x11() 
par(mfcol=c(1,2)) 
plot(x,y, ylim=range(MEAN, MAX, MIN), ylab="", xlab="") 
plot(as.POSIXlt(names(MEAN)), MEAN, t="l", ylim=range(MEAN, MAX, MIN), ylab="", xlab="") 
lines(as.POSIXlt(names(MEAN)), MAX, lty=2) 
lines(as.POSIXlt(names(MEAN)), MIN, lty=2) 

enter image description here