我想计算Mean.Temp.c的平均值。特定日期之前的日期,例如本示例中date2列中所示的1963-03-23。这是我所在地区1963年融雪高峰期发生的时候。我想知道在此日期之前(即1963-03-23)的10天平均气温。怎么做?我有50年的数据,每年的峰值融雪日期都不同。
答案 0 :(得分:0)
您可以尝试:
library(dplyr)
df %>%
mutate(date2 = as.Date(as.character(date2)),
ten_day_mean = mean(Mean.Temp.c[between(date2, "1963-03-14", "1963-03-23")]))
在这种情况下,所需的均值将填充整列。
或使用data.table
:
library(data.table)
setDT(df)[between(as.Date(as.character(date2)), "1963-03-14", "1963-03-23"), ten_day_mean := mean(Mean.Temp.c)]
对于后一种情况,与日期范围无关的那几天,您将获得NA
。
答案 1 :(得分:0)
假设date2
是一个Date字段,而您的data.frame称为x
:
start_date <- as.Date("1963-03-23")-10
end_date <- as.Date("1963-03-23")
mean(x$Mean.Temp.c.[x$date2 >= start_date & x$date2 <= end_date])
现在,如果您有多年的兴趣,可以将此代码包装在for循环(或[s | l] apply)中,并从日期向量中获取元素。