使用R中函数内的两个分组变量聚合变量

时间:2017-10-11 00:42:14

标签: r function aggregate

我正在尝试编写一个函数,它将按年龄和国家为我提供简单的描述性统计数据。

以下是我的数据示例:

popcount = 200:250
sex = rep(c("M", "F"), 25)
country = rep(c("NZ", "Aus", "Fiji", "PNG", "Samoa"), 10)

为了获得聚合,我已经指定了以下函数

Aggregate_fun <- function(pop, ag1, ag2) {
popbylist <- data.frame(aggregate(pop, by = list(ag1, ag2)), FUN=sum)
return(popbylist)
}

然后我在我的数据

上运行此功能
Gend_Country <- Aggregate_fun(pop = popcount, ag1 = sex, ag2 = country)

运行时,我收到以下错误消息:

  

match.fun(FUN)中的错误:参数&#34; FUN&#34;缺少,没有默认

     

6。   match.fun(FUN)   5。   aggregate.data.frame(as.data.frame(x),...)   4。   aggregate.default(pop,by = list(ag1,ag2))   3。   aggregate(pop,by = list(ag1,ag2))   2。   data.frame(aggregate(pop,by = list(ag1,ag2)),FUN = sum)   1。   Aggregate_fun(pop = popcount,ag1 = sex,ag2 = country)

我知道我指定要聚合的变量列表的方式有错误。我已经尝试了很多不同的东西来解决这个问题,但是没有一个能够解决问题。有谁知道如何正确编写此功能?

1 个答案:

答案 0 :(得分:2)

看起来括号在该聚合函数中放错了位置,将“FUN”置于聚合之外。另外popcount有51个值,而另外两个只有50个。下面的代码正在做我认为你想要的。

popcount = 201:250
sex = rep(c("M", "F"), 25)
country = rep(c("NZ", "Aus", "Fiji", "PNG", "Samoa"), 10)

Aggregate_fun <- function(pop, ag1, ag2) {
  popbylist <- data.frame(aggregate(pop, by = list(ag1, ag2), FUN=sum))
  return(popbylist)
}

Gend_Country <- Aggregate_fun(pop = popcount, ag1 = sex, ag2 = country)