R-Blogger블로그·해설한국어2009-02-17
새
R에서 새롭게 발견한 유용한 함수: ave() 활용하기 저는 어제 R의 ave() 함수를 발견했습니다. 이 함수는 “x[]의 하위 집합을 평균내며, 각 하위 집합은 같은 팩터 수준을 갖는 관측치를 포함합니다.”라는 동작 방식을 갖습니다. 하지만 흥미로운 점은 평균이 아니더라도 다른 함수로도 대체할 수 있다는 것입니다. 해당 함수의 출력 결과가 각 관측치에 매핑됩니다. 기본 문법 ave(x, group, FUN = mean, ...) x : 평균을 낼 대상 벡터 또는 열 group : 팩터(levels)로 그룹화를 지정하는 객체 FUN : 사용할 함수 (기본값은 mean) 예시: 데이터프레임에서 그룹별 평균 구하기 # 예시 데이터 df <- data.frame( group = rep(c("A", "B"), each = 5), value = 1:10 ) # group별 평균 계산 df$avg <- ave(df$value, df$group, FUN = mean) # 결과 확인 df 위 예제에서는 group 컬럼이 “A”와 “B”로 나뉜 두 그룹에 대해 value 컬럼의 평균을 각각 계산했습니다. 결과는 각 행마다 해당 그룹의 평균값이 할당됩니다. 평균 외 다른 함수로 변형하기 합계 구하기 df$sum <- ave(df$value, df$group, FUN = sum) 표준편차 구하기 df$sd <- ave(df$value, df$group, FUN = sd) 중앙값 구하기 df$median <- ave(df$value, df$group, FUN = median) 이처럼 ave()를 이용하면 그룹별로 원하는 통계량을 한 줄의 코드로 손쉽게 구할 수 있습니다. 실전 팁: 복합 함수 사용 여러 개의 함수를 동시에 적용하고 싶다면 c()를 이용해 벡터를 반환하는 함수를 만들어 줄 수 있습니다. df$summary <- ave(df$value, df$group, FUN = function(x) c(mean = mean(x), sd = sd(x))) 이때 반환값이 벡터인 경우 ave()가 각 관측치에 벡터를 그대로 할당하기 때문에, 별도의 전처리 없이 바로 활용할 수 있습니다. 정리 R의 ave() 함수는 평균을 구하는 전용 함수가 아니라, FUN 인자를 통해 임의의 통계량을 계산하도록 설정할 수 있는 다재다능한 도구입니다. 그룹별 데이터 처리 시 효율적으로 활용해 보세요. 더 자세한 내용은 R 매뉴얼의 base R 문서를 참고하시기 바랍니다.
원문 URL
전체 글은 원문 페이지에서 이어서 읽을 수 있습니다.
- 작성자
- R-Blogger
- 출처
- R-Blogger
- 플랫폼
- R-Blogger
- 분류
- 블로그·해설
- 언어
- 한국어
- 발행일
- 2009-02-17