2017-02-18 1 views
1

에 새로운 변수 사용하여 최소/최대 생성 몇 년 떨어져 STATA에서 후 :나는 현재 반복이 같은 일을 수행하는 코드 편집하고 STATA

egen min = min(x) 
egen max = max(x) 
generate xn = (x - min)/(max - min) 
drop min max 

을 나는 한 줄에이 코드를 줄이고 자. 그러나 내 마음에 오는 두 가지 "자연스런"방법 중 어느 것도 작동하지 않습니다.

gen x_index = (x - min(x))/(max(x)- min(x)) 
egen x_index = (x - min(x))/(max(x)- min(x)) 

어떤 Stata 논리가 빠졌습니까?

답변

2

Stata 함수 max()min()은 두 개 이상의 인수가 필요하며 인수가 하나 인 변수가 주어진 경우 행을 기준으로 (관찰을 통해) 작동합니다. 예 : help max().

egen 기능 max()min()egen 호출 내에서만 사용할 수 있습니다. 단일 변수를 적용 할 수는 있지만 단일 최대 값 또는 최소값을 계산하는 데는 예외적으로 단일 결과를 변수에 저장하는 것이 중요하지 않으면 매우 비효율적입니다. help egen의 경고를 제외하고 문서화 됨.

당신이 고려하지 않은 접근 방식은 더 이상 로터리가되지 않고 작동합니다. 그냥 한 번 범위를 계산하는 것이 더 효율적이 될 수있는 몇 가지 상황에서

su x, meanonly 
gen x_index = (x - r(min))/(r(max)- r(min)) 

을 고려

su x, meanonly 
scalar range = r(max) - r(min) 
gen x_index = (x - r(min))/range 

를 프로그램에서는 보통 스칼라에게 임시 이름을 제공하기 위해 더 좋을 것이다.

egen 호출 내에서 egen 함수는 한 번만 호출 할 수 있습니다.

+0

감사합니다. atm 저는 효율성보다 가독성에 더 관심이 있습니다. 'su x, meanonly'를'qui su x'로 바꾸면 평등하겠습니까? – snoram

+0

아니오; 그건 맞지 않아. 이것은 'help 요약'에서 쉽게 추론 할 수 있습니다. 'summarize'는'summary, meanonly'보다 더 많은 일을합니다. –

+0

나중에 **()를 호출하면 ** 여기에 해당하는 ** 기능을 수행 할 수 있습니다. – snoram

관련 문제