Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement Stata:将if与值标签一起使用_If Statement_Stata - Fatal编程技术网

If statement Stata:将if与值标签一起使用

If statement Stata:将if与值标签一起使用,if-statement,stata,If Statement,Stata,我在使用带有值标签的if时遇到了一个问题 set obs 5 gen var1 = _n label define l_var1 1 "cat1" 2 "cat1" 3 "cat2" 4 "cat3" 5 "cat3" label val var1 l_var1 keep if var1=="cat3":l_var1 (4 observations deleted) 我希望删

我在使用带有值标签的if时遇到了一个问题

set obs 5
gen var1 = _n
label define l_var1 1 "cat1" 2 "cat1" 3 "cat2" 4 "cat3" 5 "cat3"
label val var1 l_var1
keep if var1=="cat3":l_var1
(4 observations deleted)
我希望删除3条记录。我怎样才能做到这一点

我使用的是Stata 16.1。

“cat3”:l_var1
不会在
l_var1
中查找与
“cat3”
对应的所有值。它返回与字符串
“cat3”
对应的第一个值

所以
“cat3”:l_var1
计算为
4
So
keep if var1==“cat3”:l_var1
计算为
keep if var1==4
,因此只保留一个观察值

请参阅下面显示此行为的代码。这似乎不是您希望“cat3”:l_var1的行为方式,但这是它的行为方式

set obs 5
gen var1 = _n
label define l_var1 1 "cat1" 2 "cat1" 3 "cat2"  5 "cat3" 4 "cat3"
label val var1 l_var1
gen var2 = "cat3":l_var1
gen var3 = 1 if var1=="cat3":l_var1
这回答了代码中正在发生的事情。下面的代码是一种更好的方法来解决您试图做的事情

set obs 5
gen var1 = _n
label define l_var1 1 "cat1" 2 "cat1" 3 "cat2"  5 "cat3" 4 "cat3"
label val var1 l_var1

decode var1, generate(var_str)
keep if var_str == "cat3"

我想用标签
cat3
保存所有记录。干净的统计方法是只有一个值对应于标签
cat3
,这是不可能的吗?我已经在上面的回答中添加了。这就是你问题的答案吗?有时,需要对几个类别进行分组,并在不编码值的情况下运行一些命令,如tab等。你的回答似乎很好。谢谢。如果回答了您的问题,请标记为已回答