我试图在Stata中构建以下if语句:我希望Stata使用以下条件keep if distance > 50 & distance < 60
限制我的示例,但前提是二进制变量category = 0
是。我怎样才能做到这一点?
发布于 2020-11-26 07:23:55
您可以在if-语句中添加额外的条件。
keep if category == 1 | (category == 0 & distance > 50 & distance < 60)
发布于 2021-10-16 01:52:43
如果您说要将样本限制在所有属于0类且距离也在50至60之间的观测,即:
keep if (category == 0 & distance > 50 & distance < 60)
发布于 2022-01-20 08:56:50
如果您想在数据集中维护这两种类型的观察,我建议您创建一个名为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
我希望这对你有帮助。
https://stackoverflow.com/questions/65017541
复制相似问题