使用条件语句生成新变量

时间:2019-09-04 12:50:59

标签: stata

给出以下数据集和命令:

sysuse auto, clear

generate x = .
replace x = 5 if price == 4099
replace x = 5 if price == 4749

如果x属于值列表,我想生成一个等于5的新变量price

以下命令未生成x的新值,并且是错误的:

replace x = 5 if price == 4099 & price == 4749

我需要一种更简单的单行方法,该方法不涉及以上面的代码替换x的方式,这种方法虽然有效,但是却乏味且不雅。

1 个答案:

答案 0 :(得分:2)

您需要使用'或'(|)而不是'和'(&):

sysuse auto, clear

generate x = .
replace x = 5 if price == 4099
replace x = 5 if price == 4749

generate y = 5 if price == 4099 | price == 4749

或者,您可以使用inlist()函数:

generate z = 5 if inlist(price, 4099, 4749)

结果:

list price x y z in 1 / 5

     +-------------------+
     | price   x   y   z |
     |-------------------|
  1. | 4,099   5   5   5 |
  2. | 4,749   5   5   5 |
  3. | 3,799   .   .   . |
  4. | 4,816   .   .   . |
  5. | 7,827   .   .   . |
     +-------------------+