2017-10-11 17 views
0

年齢と国ごとの母集団の簡単な説明統計を提供する関数を作成しようとしています。ここで関数内の2つのグループ化変数を使用して変数を集計するR

は私のデータの例である:

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):引数 "FUN" はデフォルトなし

6. match.fun(FUN) 5. aggregate.data.frame(as.dataで、不足しています.frame(X)、...)(=リストでポップ、(AG1、AG2) 4 aggregate.default) 3.凝集(=リストでポップ、(AG1、AG2)) 2。 1. Aggregate_fun(pop = popcount、ag1 = sex、ag2 = country)

(1)

私は、集計する変数のリストを指定する方法にエラーがあることを知っています。私はこれを修正するためにいくつかの異なることを試しましたが、どれもうまくいきません。誰もこの関数を正しく書く方法を知っていますか?括弧が集約の「FUN」の外に置くことの集計関数に置き忘れているよう

答えて

2

が見えます。さらに、popcountには51の値があり、他の2つには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) 
関連する問題