If statement Stata中的条件if和编程if

If statement Stata中的条件if和编程if,if-statement,conditional-statements,stata,If Statement,Conditional Statements,Stata,我试图理解Stata中编程if和条件if之间的区别。这就是我正在做的 sysuse auto,clear #conditional if sum price if price>4499 Variable | Obs Mean Std. Dev. Min Max -------------+-------------------------------------------------------- p

我试图理解Stata中编程
if
和条件
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。我可以理解编程
if
查看price中的第一个观察值,然后查看它是否大于指定的数字,然后执行程序。但是,这显然不是我在这里看到的。我们将非常感谢您在这方面提供的任何帮助

您正在看到预期的行为

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                   |
     +------------------------------------------------------------------------------------------+
因此,第一个价格观察值是4099美元。当您运行“有条件”if like
sum price if price>4499
时,Stata会查找
price
超过4499的观测值,然后对这些观测值运行
summary
命令。有48个这样的观察结果

当您执行“编程如果”时,执行是:

  • Stata到达
    if
    语句并决定是否满足条件
  • 如果条件满足,它将进入If块并执行代码
  • 如果不满足条件,Stata跳过关闭
    }
    并忽略
    If
    代码
  • 因此,当您执行
    if price>4000{…}
    时,Stata会查看第一个观察结果,发现价格大于4000,然后继续执行代码。由于
    if
    块中的
    summary
    没有条件,因此该命令与所有观察值一起执行。当您执行
    if price>5000{…}
    时,Stata发现条件不满足,并跳过
    {…}
    中的代码


    if
    限定符和
    if
    语句之间的区别是。

    非常感谢您的参考。