我有一个包含大约 40 个变量的数据集。其中大约一半是测量值,另一半是有关该观察的人口统计信息。每个 id 有两个观察入口和出口。我正在比较进入与退出时的测量方法。
我已经编写了代码来为每个测量运行 ttest 然后存储在一个 txt 文件中,这很好用。
现在我需要按人口统计变量进行一些分组。
我正在使用以下
by var1, sort: ttest var2 by stage
stage 是定义观察是进入还是退出的变量。var1 是人口统计变量之一(例如性别、吸烟、饮酒),可以有 2-4 个编码值。
我要做的是循环运行此代码并写入文本文件。但是, r() 命令仅返回运行 ttest 的最后一组的结果。
它自己工作的代码,因为所有 ttest 结果都打印到结果屏幕,但是,并非所有结果都被写入文件。
例如,如果 var1 的可能值为 1 ,2 ,3 和 4 我只得到第 4 组的结果。
foreach var of var ttlchol-exvol{
foreach v of var sex dm chf diastolic copd ckd Depression {
capture by `v',sort: ttest `var' , by(stage)
if !_rc {
by `v',sort: ttest `var', by(stage)
file write myfile2 ///
%9s "`var'" _tab %7.3f (r(N_1)) ///
_tab %7.3f (r(N_2)) _tab %7.5f (r(p_l)) ///
_tab %7.5f (r(p_u)) _tab %7.5f (r(p)) ///
_tab %7.5f (r(se)) _tab %7.3f (r(t)) ///
_tab %7.3f (r(sd_1)) _tab %7.3f (r(sd_2)) ///
_tab %7.3f (r(mu_1)) _tab %7.3f (r(mu_2)) ///
_tab %7.3 (r(df_t)) ///
_n
}
}
}
我已经寻找有关 STATA 如何处理 by , sort: 的更多详细信息,但我无法找到一种方法来捕获每次迭代的结果。
是否有可能获得 a by , sort: 函数的每次迭代的结果?如果是这样,我会怎么做?