计算不同时间段的平均值

时间:2020-02-04 13:17:18

标签: r aggregate mean

我的数据框(df)是:

Year Site1 Site2 Site3   
2000 2 4 5  
2001 2 5 45  
2002 4 4 56  
2003 23 67 45  
2004 4 4 34  
2005 3 56 34   
2006 67 12 24

我想从某些时间窗口计算三个站点的平均值。期限为:a)2000年至2006年,b)2001年至2006年,c)2002年至2006年,d)2000年至2004年

我在句号“ a”中使用的代码如下:

P <- cbind(df[,2:4]
mean_a <- aggregate(P ~ df[1:7,], mean)

我得到以下信息:

aggregate.data.frame(as.data.frame(x),...)中的错误: “ by”必须是列表

2 个答案:

答案 0 :(得分:2)

像这样吗?

> ix=list(2000:2006,2001:2006,2002:2006,2000:2004)
> lapply(ix,function(x){colMeans(subset(dat,Year%in%x,select=-c(Year)))})

[[1]]
   Site1    Site2    Site3 
15.00000 21.71429 34.71429 

[[2]]
   Site1    Site2    Site3 
17.16667 24.66667 39.66667 

[[3]]
Site1 Site2 Site3 
 20.2  28.6  38.6 

[[4]]
Site1 Site2 Site3 
  7.0  16.8  37.0

答案 1 :(得分:0)

library(dplyr)
library(purrr)

fy_1 <- c(2000:2006)
fy_2 <- c(2001:2006)
fy_3 <- c(2006:2006)
fy_4 <- c(2000:2004)

fy <- list(fy_1, fy_2, fy_3, fy_4)

map(.x = fy, ~ foo %>%
  filter(Year %in% .x) %>%
  select(-Year) %>%
  colMeans())