本文介绍了使用条件语句生成新变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

给定以下数据集和命令:

sysuse auto, clear

generate x = .
replace x = 5 if price == 4099
replace x = 5 if price == 4749
我想生成一个新变量x,如果price属于值列表,则该变量等于5

以下命令不会生成x的新值,并且不正确:

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

我需要一个更简单的单行方法,它不需要像我在上面的代码中那样替换x,这是可行的,但很单调乏味。

推荐答案

您需要使用‘or’(|)而不是‘and’(&):

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   .   .   . |
     +-------------------+

这篇关于使用条件语句生成新变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 19:42