2013-03-01 2 views
0

패키지 reldist에서 gini() 함수를 사용하지 않고 R을 사용하여 여러 개의 그림의 지니 계수를 계산하고 싶습니다. gini 함수의 입력으로 두 개의 열을 사용해야하는 데이터 프레임이 있습니다.하나 대신 두 개의 열에 tapply 사용

> head(merged[,c(1,17,29)]) 
    idp c13  w 
1 19 126 14.14 
2 19 146 14.14 
3 19 76 39.29 
4 19 74 39.29 
5 19 86 39.29 
6 19 93 39.29 

지니 기능은 계산을 위해 첫 번째 요소를 사용한다 (여기서 C13) 및 제 소자 (C13)의 각 요소에 대응 (여기서는 W) 가중치이다.

그래서 나는이 같은 열 C13 및 승을 사용할 필요가 :

gini(merged$c13,merged$w) 
[1] 0.2959369 

것은 내가 각각의 플롯 (IDP)이 작업을 수행 할 수 있습니다. 나는 4 개의 수천 개의 다른 idp 값과 각각 다른 두 개의 열 값을 가지고있다.

나는 이것을 tapply() 함수를 사용하여 할 수 있다고 생각했다. 하지만 tapply를 사용하여 함수에 두 개의 열을 넣을 수는 없습니다.

tapply(list(merged$c13,merged$w), merged$idp, gini) 

알고 계신 것 같습니다. 그래서 나는 결과이 같은 데이터 프레임으로 얻을 싶어요 :

idp Gini 
1 19 0.12 
2 21 0.45 
3 35 0.65 
4 65 0.23 

는이 작업을 수행하는 방법에 대한 어떤 생각을 가지고 있습니까이? 아마도 플라이 패키지일까요? 도움을 주셔서 감사합니다.

답변

1

라이브러리 plyr()ddply() 함수를 사용하여 각 레벨 (계수 데이터 예제에서 idp 값이 21로 변경됨)에 대한 계수를 계산할 수 있습니다.

library(plyr) 
library(reldist) 
ddply(merged,.(idp),summarize, Gini=gini(c13,w)) 

    idp  Gini 
1 19 0.15307402 
2 21 0.05006588 
+0

감사합니다. 필자는이 plyr 패키지를 사용해야합니다. 흥미로운 기능들로 가득 찬 것 같습니다. – Tom

관련 문제