If 语句 Stata

If statement Stata

我正在尝试在 Stata 中构建以下 if 语句: 我希望 Stata 将我的样本限制在以下条件 keep if distance > 50 & distance < 60 但前提是 二进制变量 category = 0。我怎样才能做到这一点?

您可以在 if 语句中添加额外的条件。

keep if category == 1 | (category == 0 & distance > 50 & distance < 60)

如果您说要将样本限制为类别 0 且距离也在 50 到 60 之间的所有观察值,即:

keep if (category == 0 & distance > 50 & distance < 60)

如果您想在数据集中保留这两种类型的观察结果,我建议您创建一个名为 restricted_sample 的新虚拟变量。之后,您可以计算两个类别或每个类别的统计数据。您可以通过以下方式根据您的要求创建此变量:

gen restricted_sample = 1 if category == 0 & distance > 50 & distance < 60 & !missing(distance) & !missing(category) 
replace restricted_sample = 0 if restricted_sample == .& !missing(distance) & !missing(category) 

然后您可以获得考虑到不同子组的统计数据:

* All 
sum distance

* For each group
sum distance if restricted_sample == 1
sum distance if restricted_sample == 0

您可以使用以下数据集测试代码。该数据集还包含一些缺失值。

clear all 
set obs 100
gen distance = runiform(1,100)
gen category = 1 if _n > 50
replace category = 0 if _n < 50 
replace distance = . if mod(_n, 7) == 0
replace category = . if mod(_n, 13) == 0 

希望对你有用