Stata循环执行collapse未生成均值/中位数变量求助
问题分析
你的代码核心问题是循环内重复执行collapse命令:
- 第一次循环处理
varA时,collapse会将原始数据集替换为按interview_id speaker_num分组的汇总结果,此时原始数据中的varB已被移除。 - 第二次循环处理
varB时,当前数据集里没有varB变量,collapse无法生成对应统计量,最终导致保存的文件不符合预期,甚至意外保留原始数据状态。
解决方法
方法一:直接单条collapse命令(推荐,简洁高效)
不需要循环,一次性完成所有变量的均值和中位数计算:
use appended_data, clear preserve collapse (mean) mean_varA = varA mean_varB = varB /// (median) median_varA = varA median_varB = varB, /// by(interview_id speaker_num) tempfile collapsed_file save `collapsed_file', replace restore
方法二:循环拼接表达式(适合变量数量多的场景)
如果变量很多,先通过循环收集所有汇总规则,再执行一次collapse:
use appended_data, clear local renamed_vars varA varB local mean_rules "" local median_rules "" foreach var of local renamed_vars { local mean_rules "`mean_rules' mean_`var' = `var'" local median_rules "`median_rules' median_`var' = `var'" } preserve collapse `mean_rules' `median_rules', by(interview_id speaker_num) tempfile collapsed_file save `collapsed_file', replace restore
结果验证
运行代码后,可通过以下命令确认结果:
usecollapsed_file', clear`describe检查是否存在mean_varA、median_varA、mean_varB、median_varBlist interview_id speaker_num mean_* median_* in 1/10查看前10组的汇总数据
内容的提问来源于stack exchange,提问作者Shivam Tawari
相关产品推荐
相关产品推荐

