2012-05-08 3 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 работает хорошо. Ex.

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

 Смежные вопросы

  • Нет связанных вопросов^_^