Stata中ranksum循环代码修改求助:添加分组观测数与表头
解决Stata ranksum循环输出表头和样本量的问题
我来帮你搞定这个问题!你遇到的两个核心问题其实很容易解决:一是Stata返回值的命名格式,二是表头的格式化输出。
问题分析
- 样本量无法输出:你写的
r(N 1)和r(N 2)是错误的——Stata里ranksum命令返回的两组样本量是r(N1)和r(N2)(没有空格),这就是你读不到数值的原因。 - 表头添加:只需要在循环开始前用
display命令输出格式化的表头,再配合横线分隔,就能让结果更清晰。
修改后的完整代码
* 先输出表头和分隔线 di "{hline 70}" di "{align center}Variable{col 22}P-Value{col 32}PValue2{col 42}Porder{col 52}Obs. Group 1{col 62}Obs. Group 2" di "{hline 70}" * 循环处理每个变量 foreach v of var BVCAlogMAR AvgSSI L1DensityWholeImage { quietly ranksum `v', by(G6PDcarente) porder scalar pval = 2*normprob(-abs(r(z))) di "`v'{col 22}" %05.3f pval "{col 32}" %6.4e pval "{col 42}" %05.3f r(porder) /// "{col 52}" %05.0f r(N1) "{col 62}" %05.0f r(N2) }
代码说明
- 表头部分:用
{hline}添加横线分隔,{align center}让变量名居中,{col X}指定列的位置,确保表头和后续内容对齐。 - 样本量修正:把
r(N 1)改为r(N1),r(N 2)改为r(N2),就能正确读取两组的观测数了。 - 格式优化:样本量用
%05.0f(整数格式)比小数格式更合理,你可以根据自己的需求调整格式符。 - quietly命令:保持
quietly ranksum可以避免Stata每次输出默认的秩和检验结果,只显示我们自定义的表格。
这样运行后,你就能得到一个格式整齐、包含表头和样本量的结果输出啦!
内容的提问来源于stack exchange,提问作者Giuseppe D'Amico Ricci
相关产品推荐
相关产品推荐

