그룹 별 요약 통계를 얻는 방법
한 번에 범주 열별로 그룹화 된 R / S-PLUS에서 여러 요약 통계를 얻으려고합니다. 몇 가지 함수를 찾았지만 모두`aggregate ()와 같이 호출 당 하나의 통계를 수행합니다.
data <- c(62, 60, 63, 59, 63, 67, 71, 64, 65, 66, 68, 66,
71, 67, 68, 68, 56, 62, 60, 61, 63, 64, 63, 59)
grp <- factor(rep(LETTERS[1:4], c(4,6,6,8)))
df <- data.frame(group=grp, dt=data)
mg <- aggregate(df$dt, by=df$group, FUN=mean)
mg <- aggregate(df$dt, by=df$group, FUN=sum)
내가 찾고있는 것은 평균, 최소, 최대, 표준, ... 등과 같은 동일한 그룹에 대한 여러 통계를 한 번의 호출로 얻는 것입니다.
2 센트를 tapply()
.
tapply(df$dt, df$group, summary)
요약을 대체하려는 특정 통계로 사용자 지정 함수를 작성할 수 있습니다.
dplyr 패키지는이 문제에 대한 좋은 대안이 될 수 있습니다.
library(dplyr)
df %>%
group_by(group) %>%
summarize(mean = mean(dt),
sum = sum(dt))
1 사분면과 3 사분면을 얻으려면
df %>%
group_by(group) %>%
summarize(q1 = quantile(dt, 0.25),
q3 = quantile(dt, 0.75))
Hadley Wickham의 purrr 패키지를 사용하면 매우 간단합니다. 사용하여 split
전달 분할 data_frame
사용 후, 그룹으로를 map
적용 할 summary
각 그룹에 기능을.
library(purrr)
df %>% split(.$group) %>% map(summary)
이 이것에 대해 이동하는 방법에는 여러 가지가 있어요,하지만 난에 부분 해요 describeBy
의 psych
패키지 :
describeBy(df$dt, df$group, mat = TRUE)
plyr
패키지를 보세요 . 구체적으로 특별히,ddply
ddply(df, .(group), summarise, mean=mean(dt), sum=sum(dt))
게다가 describeBy
의 doBy
패키지는 다른 옵션입니다. SAS PROC SUMMARY의 많은 기능을 제공합니다. 세부 정보 : http://www.statmethods.net/stats/descriptives.html
5 년이 지난 후에도이 답변에 대해 많은 관심을받지 못할 것이라고 확신합니다. 그러나 여전히 모든 옵션을 완성하기 위해 data.table
library(data.table)
setDT(df)[ , list(mean_gr = mean(dt), sum_gr = sum(dt)) , by = .(group)]
# group mean_gr sum_gr
#1: A 61 244
#2: B 66 396
#3: C 68 408
#4: D 61 488
다른 접근 방식 중 일부는 작동하지만 이것은 당신이하던 것과 매우 유사하며 base r 만 사용합니다. 집계 명령을 알고 있다면 더 직관적 일 수 있습니다.
with( df , aggregate( dt , by=list(group) , FUN=summary) )
첫째, R 버전에 따라 다릅니다. 2.11을 통과 한 경우 여러 결과 함수 (요약, 인스턴스 또는 자체 함수)와 함께 집계를 사용할 수 있습니다. 그렇지 않은 경우 Justin의 답변을 사용할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/9847054/how-to-get-summary-statistics-by-group
'Development Tip' 카테고리의 다른 글
OS X Yosemite 업데이트 후 IntelliJ가 시작되지 않음 (0) | 2020.12.13 |
---|---|
Haskell 대수 데이터 유형이 "닫힌"이유는 무엇입니까? (0) | 2020.12.13 |
FBSDK 로그인 오류 코드 : Objective-C의 308 (0) | 2020.12.13 |
Javascript의 함수에 이벤트 객체를 전달하는 방법은 무엇입니까? (0) | 2020.12.13 |
HTML 테이블의 행 수를 가져 오는 JavaScript (0) | 2020.12.13 |