本文介绍了使用条件语句生成新变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
给定以下数据集和命令:
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 . . . |
+-------------------+
这篇关于使用条件语句生成新变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!