2013-07-23 1 views
2

Stata에서 과 if을 프로그래밍하는 것의 차이점을 이해하려고합니다. 여기 내가하는 일이있다. if 프로그래밍 왜 궁금Stata의 경우 if 및 프로그래밍

sysuse auto,clear 

#conditional if 
sum price if price>4499 


    Variable |  Obs  Mean Std. Dev.  Min  Max 
-------------+-------------------------------------------------------- 
     price |  48 7312.813 3102.784  4504  15906 



# programming if 
if price>3291{ 
sum price 
} 


    Variable |  Obs  Mean Std. Dev.  Min  Max 
-------------+-------------------------------------------------------- 
     price |  74 6165.257 2949.496  3291  15906 



# programming if 
if price>5000{ 
sum price 
} 

This doesn't give me anything 

#programming if 

if price>4000{ 
sum price} 

    Variable |  Obs  Mean Std. Dev.  Min  Max 
-------------+-------------------------------------------------------- 
     price |  74 6165.257 2949.496  3291  15906 

내가 실행 한 후 if 가격에서 처음 관찰에 보이는 프로그래밍을 이해 한 후 지정된 수보다 큰 경우에 볼 수있는 3291 및 4000이 아닌 5000의 출력을 제공하는 프로그램. 그러나 이것은 분명히 내가 여기서보고있는 것이 아닙니다. 이와 관련하여 도움이 될 것입니다.

답변

5

예상되는 동작이 나타납니다.

sysuse auto 
. list in 1 

    +------------------------------------------------------------------------------------------+ 
    1. | make  | price | mpg | rep78 | headroom | trunk | weight | length | turn | displa~t | 
    | AMC Concord | 4,099 | 22 |  3 |  2.5 | 11 | 2,930 | 186 | 40 |  121 | 
    |------------------------------------------------------------------------------------------| 
    |     gear_r~o     |     foreign     | 
    |      3.58     |     Domestic     | 
    +------------------------------------------------------------------------------------------+ 

따라서 최초 가격 관측치는 $ 4,099입니다. sum price if price > 4499과 같이 "조건부"를 실행하면 Stata는 price이 4,499를 초과하는 관측치를 찾은 다음 해당 관측치에 summarize 명령을 실행합니다. 48 건의 그러한 관찰이있다.

, 실행은 당신이 "경우 프로그래밍"을 수행 할 때 :

  1. STATA가 if 문에 도달하고 조건이 만족 여부를 결정합니다.
  2. 조건이 충족되면 if 블록에 들어가 코드를 실행합니다.
  3. 조건이 충족되지 않으면 Stata는 } 닫음을 건너 뛰고 if 코드를 무시합니다.

그래서 if price > 4000 { ... }을 할 때 Stata는 첫 번째 관찰을보고 가격이 4,000보다 크고 코드 실행을 계속합니다. if 블록 내의 summarize에는 조건이 없으므로 모든 관측과 함께 명령이 실행됩니다. if price > 5000 { ... }을 수행하면 Stata는 조건이 만족스럽지 않다고보고 { ... } 내의 코드를 건너 뜁니다.

if 한정자와 if 문과의 차이는 explained by StataCorp in their FAQs입니다.

+0

참고해 주셔서 감사합니다. – Metrics