无法折叠循环中的数据并创建变量

问题描述 投票:0回答:1

我正在尝试在 Stata 中创建一个循环,以便我可以添加多个变量来创建mean_var和median_var。然而,这些数据并没有创造任何变量; Collapsed_file 与我的原始数据相同。

use appended_data, clear

// Define variables for loop (Renamed)

local renamed_vars varA varB

// Speaker-Interview Level Averages and Medians
preserve
foreach var of local renamed_vars {
      collapse (mean) mean_`var' = `var' ///
                    (median) median_`var' = `var', ///
                     by(interview_id speaker_num)
}
tempfile collapsed_file
save `collapsed_file', replace
restore

有人可以帮忙吗?谢谢!

stata stata-macros readstata13
1个回答
0
投票

大概您的观察结果由

interview_id speaker_num
标识,因此每组观察结果只是一个观察结果,并报告结果。我想你应该只指定
interview_id
。一般的想法是,您应该告诉
by()
指定您想要的组的变量。

否则我对你的代码有三条评论。

  • 你可以瘦下来。创建本地宏只是为了随后立即使用其内容的间接方式没有什么好处。
use appended_data, clear

// Define variables for loop (Renamed)

// Speaker-Interview Level Averages and Medians
preserveforeach var in varA varB {
      collapse (mean) mean_`var' = `var' ///
                    (median) median_`var' = `var', ///
                     by(interview_id speaker_num)
}
tempfile collapsed_file
save `collapsed_file', replace
restore
  • 更重要的是,创建两个单独的文件只会使使用其内容变得更加困难。即使比较均值和中位数也很困难。一种解决方案是创建新变量并仅标记每组中的一个观察结果,如下所示:
use appended_data, clear

// Speaker-Interview Level Averages and Medians of varA varB
foreach var in varA varB {
      egen mean_`var' = mean(`var'), by(interview_id)
      egen median_`var' = median(`var'), by(interview_id)
}

egen tag = tag(interview_id)

现在您可以比较均值和均值

if tag

  • 将结果放入临时文件可能适合一些更广泛的策略,但您必须非常小心。事实上,您已将创建的第一个文件设置为不可访问,因为
    collapsed_file
    现在包含第二个文件的名称。因此,从您的代码中并不清楚您如何查看means文件。
© www.soinside.com 2019 - 2024. All rights reserved.