2016-12-12 3 views
-2

R에 그룹 번호별로 설명 통계를 생성하는 방법을 찾고 있습니다.이 있는데, dplyr을 사용하고 있는데, 너무 많은 문제가있어서 다른 사람들이 추천 할 수있는 대안을 확인하십시오.설명 통계 그룹 분류 - R

group_id별로 그룹화 된 수익에 대한 설명 통계를 얻으려고합니다.

group_id company  revenue 
1   Company A 200 
1   Company B 150 
1   Company C 300 
2   Company D 600 
2   Company E 800 
2   Company F 1000 
3   Company G 50 
3   Company H 80 
3   Company H 60 

을 나는 제품에 새로운 데이터 프레임이라고 new_company 싶습니다 :이 전 데이터 프레임라는 회사가 있다고 가정 해 봅시다

group_id company revenue average min max SD 
1   Company A 200 217 150 300 62 
1   Company B 150 217 150 300 62 
1   Company C 300 217 150 300 62 
2   Company D 600 800 600 1000 163 
2   Company E 800 800 600 1000 163 
2   Company F 1000 800 600 1000 163 
3   Company G 50 63  50 80 12 
3   Company H 80 63  50 80 12 
3   Company H 60 63  50 80 12 

을 다시 말하지만, 나는 dplyr하는 대안을 찾고 있어요. 단지 원래 data.frame에 있음을 결합 그런 다음 당신의 다른 기능에 대한 한 줄에 모든 값을 만드는 데 사용할 ave() 같은 멋진 무언가를 할 수있는 샘플 데이터 프레임

dd<-read.csv(text="group_id,company,revenue 
1,Company A,200 
1,Company B,150 
1,Company C,300 
2,Company D,600 
2,Company E,800 
2,Company F,1000 
3,Company G,50 
3,Company H,80 
3,Company H,60", header=T) 

를 사용하면

답변

1

감사드립니다.

ext <- with(dd, Map(function(x) ave(revenue, group_id, FUN=x), 
    list(avg=mean, min=min, max=max, SD=sd))) 
cbind(dd, ext) 
# group_id company revenue  avg min max  SD 
# 1  1 Company A  200 216.66667 150 300 76.37626 
# 2  1 Company B  150 216.66667 150 300 76.37626 
# 3  1 Company C  300 216.66667 150 300 76.37626 
# 4  2 Company D  600 800.00000 600 1000 200.00000 
# 5  2 Company E  800 800.00000 600 1000 200.00000 
# 6  2 Company F 1000 800.00000 600 1000 200.00000 
# 7  3 Company G  50 63.33333 50 80 15.27525 
# 8  3 Company H  80 63.33333 50 80 15.27525 
# 9  3 Company H  60 63.33333 50 80 15.27525 

그러나 실제로는 간단한 dplyr 명령이 더 쉬울 것입니다.

dd %>% group_by(group_id) %>% 
    mutate(
    avg=mean(revenue), 
    min=min(revenue), 
    max=max(revenue), 
    SD=sd(revenue)) 
+0

감사합니다. Flick. 마지막 솔루션이 작동하고 plyr가 설치되어 group_by 명령을 모두 잃어 버리게되었습니다. 다시 한 번 감사드립니다. – BlueDevilPride