我试图创建两个不同时间集的月平均降水量值,但在进行聚合之前,我无法将数据一分为二。
我有一个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)