如何从多个Stata文件中检索数据? [英] How to retrieve data from multiple Stata files?

查看:13
本文介绍了如何从多个Stata文件中检索数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有53个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。我需要设置一个句柄,将使用哪些变量,以及将使用哪些文件。虽然我使用数字变量来保存文件标识符,但使用字符串变量可能更典型。此外,循环遍历文件名可能比这更具挑战性。fsfrom 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆