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
希望对你有用
我正在尝试在 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
希望对你有用