2017-10-11 1 views
0

나이와 국가별로 인구에 대한 간단한 설명 통계를 제공하는 함수를 작성하려고합니다. 여기 함수 내에서 두 개의 그룹화 변수를 사용하여 변수 집계 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) : 인수 "재미"기본값은 없습니다

6. match.fun (FUN) 5. aggregate.data.frame (as.data으로 누락 .frame (X), ...) (=리스트와 팝 (AG1, AG2) 4. aggregate.default) 3. 집합체 (=리스트와 팝 (AG1, AG2)) 2. data.frame (aggregate (pop, by = list (ag1, ag2)), FUN = sum) 1. Aggregate_fun (pop = popcount, ag1 = sex, ag2 = country)

내가 집계 할 변수 목록을 지정하는 방식에 오류가 있음을 알고 있습니다. 이 문제를 해결하기 위해 여러 가지 방법을 시도했지만 그 중 아무 것도 작동하지 않습니다. 누구든지이 함수를 올바르게 작성하는 방법을 알고 있습니까?

답변

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) 
관련 문제