如何从多个Stata文件中检索数据? [英] How to retrieve data from multiple Stata files?
本文介绍了如何从多个Stata文件中检索数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
.dta
文件,每个文件都有150-200Mb,包含相同的变量集,但年份不同。由于它们的大小,合并或合并它们没有什么用处。
我需要检索一些平均值(百分比等)因此,我想创建一个新Stata文件,并以以下方式编写一个将在新Stata文件上运行的文件:它应该打开这53个Stata文件中的每个文件,进行某些计算,并将结果存储在新Stata文件中
我不确定如何才能同时打开两个Stata文件,以及如何存储计算值?
当我打开第二个.dta文件时,如何使第一个文件仍处于打开状态?如何将计算出的值存储在全局变量中?推荐答案
这里突然想到的是postfile
的用法。
这里有一个简单的例子。首先,我建立了一个包含几个数据集的示例。你已经有这个了。
clear
forval i = 1/10 {
set obs 100
gen foo = `i' * runiform()
save test`i'
clear
}
现在我设置postfile
。我需要设置一个句柄,将使用哪些变量,以及将使用哪些文件。虽然我使用数字变量来保存文件标识符,但使用字符串变量可能更典型。此外,循环遍历文件名可能比这更具挑战性。fs
from ssc是一个方便的命令,可以帮助将一组文件名放入本地宏中;它的用法在这里没有说明。
postfile mypost what mean using alltest.dta
forval i = 1/10 {
use test`i', clear
su foo, meanonly
post mypost (`i') (`r(mean)')
}
现在刷新结果
postclose mypost
看看我们有什么。
u alltest
list
+-----------------+
| what mean |
|-----------------|
1. | 1 .5110765 |
2. | 2 1.016858 |
3. | 3 1.425967 |
4. | 4 2.144528 |
5. | 5 2.438035 |
|-----------------|
6. | 6 3.030457 |
7. | 7 3.356905 |
8. | 8 4.449655 |
9. | 9 4.381101 |
10. | 10 5.017308 |
+-----------------+
我在这里没有使用任何全局宏(不是全局变量);您应该不需要这样做。
这篇关于如何从多个Stata文件中检索数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文