首页 > 解决方案 > 计算不同时间段的平均值

问题描述

我的数据框(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' 必须是一个列表

标签: raggregatemean

解决方案


像这样的东西?

> 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

推荐阅读