Stata 17中table命令如何显示频率为0的因子变量水平?
Stata 17 保留因子变量频数为0的水平行方法
要在Stata 17的新table命令中保留频数为0的因子水平行,有两种实用方法:
方法一:使用fvset命令强制保留所有因子水平
如果你的变量已经是因子变量(带i.前缀或通过encode生成),先执行fvset命令设置保留所有水平,再生成频数表:
* 假设因子变量为group,设置保留所有水平 fvset baselevels group, all * 生成包含所有水平的频数表 table i.group, stat(fvfrequency fvpercent)
这个命令会让Stata识别因子变量的所有原始水平,即使对应频数为0也会在表中显示。
方法二:合并全水平空数据集确保所有水平存在
如果不想修改因子变量设置,可以先创建包含所有水平的空数据集,再与原数据合并,保证每个水平都有观测(哪怕频数为0):
* 先保存原数据 save "temp_data.dta", replace * 获取因子变量group的所有水平 levelsof group, local(all_levels) * 创建包含所有水平的空数据集 clear foreach level of local all_levels { set obs 1 gen group = `level' } * 合并原数据 merge 1:m group using "temp_data.dta" * 生成频数表 table i.group, stat(fvfrequency fvpercent) * 清理临时文件 erase "temp_data.dta"
这种方法通过构造完整的水平集合,确保table命令能识别所有需要显示的行。
内容的提问来源于stack exchange,提问作者user20280862
相关产品推荐
相关产品推荐

