r-如何组合每月的聚合和在某个日期拆分数据集



我试图创建两个不同时间集的月平均降水量值,但在进行聚合之前,我无法将数据一分为二。

我有一个2006年1月1日至2009年12月31日的日降水量数据集,我想在(2015年1月01日至2005年12月1日(和(2009年1月1-2055日至1999年12月12日(这段时间内每月进行汇总。

我使用了聚合函数来创建这样的每月平均值。但现在我有了整个数据集(2006-2100(每月的平均值,我想有两个列表(一个是2015年1月1日至2005年12月31日,另一个是2005年1月01日至2009年12月12日(。我想我需要做一个子集或分割数据,但我找不到如何将其与聚合函数相结合。非常感谢!

months = Alentejo_RCP4.5_Average$Month
Alentejo_RCP4.5_Average.myma = aggregate(x = Alentejo_RCP4.5_Average, 
by = list(months), FUN = mean)

我也试过了,但它只需要日期,而不是日期的附加值。

df <- data.frame(date=as.Date("2015-01-01")+1:365, x=1:365)
list <- split(df,df$date<as.Date("2055-01-01"))
zz <- " Year Month Day Date Average_P
2006     1   1 2006-01-01   6.5
2007     1   2 2007-01-02   2.8
2055     3   3 2055-03-03   3.5
2058     3   4 2058-03-04   5.1
2060     5   5 2060-05-05   3.2"
Data <- read.table(text=zz, header = TRUE)

您可以创建一个新列来区分两组,并获取每组和每个月的mean,而不是拆分数据集。

Data %>%
mutate(Date = as.Date(Date), 
group =  ifelse(Date < as.Date("2055-01-01"), 
'below_2055', 'above_2055'), 
month = format(Date, '%m-%Y'))  %>%
group_by(group, Date) %>%
summarise(Average_P = mean(Average_P)) -> result

或在基地R:

Data$Date <- as.Date(Data$Date)
aggregate(Average_P~group + month, 
transform(Data, 
group = ifelse(Date < as.Date("2055-01-01"), 
'below_2055', 'above_2055'),
month = format(Date, '%m-%Y')), mean) -> result

如果您需要列表形式的最终输出,则可以使用split

split(result,result$group)

相关内容

  • 没有找到相关文章

最新更新