【问题标题】:How to calculate a monthly mean?如何计算月均值?
【发布时间】:2012-05-17 05:50:54
【问题描述】:

我有这样的每日天气预报。 我想要的是计算最高、最低和观测温度的月平均值,然后绘制这三条线。我已经像这样转换日期格式:

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

【问题讨论】:

  • 你能提供一个小的可重现的示例数据集吗?
  • 您似乎删除了指向示例数据图片的链接,而是发布了第一行格式不佳的版本。您还完全删除了您的实际问题。如果您想得到一个体面的答案,请更新您的问题。
  • 谢谢,这是我的第一个问题,很抱歉。

标签: r weather


【解决方案1】:

我发现 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 2020-03-12
    • 2011-09-25
    相关资源
    最近更新 更多