【问题标题】:Splitting large file in Stata into smaller files将Stata中的大文件拆分为较小的文件
【发布时间】:2014-10-25 14:19:40
【问题描述】:

我在 Stata 中有一个 100 MB 的文件,每个公司包含 260 个观察值。我的样本中有大约 4000 家公司。因此,每个公司的时间序列数据一个接一个地堆积在一个文件中,一个接一个地堆积在一个文件中。我想将此文件拆分为较小的文件,一个文件用于一家公司。我尝试在 Stata 中使用forval 循环,我得到的只是计数器“i”是一个无效名称。我使用的循环如下:

   forval i=1/4000 {
   use "file.dta" if internalid=='i',clear
   save "newfile_'i'"
   }

【问题讨论】:

  • 您的本地人似乎使用了错误的开头引号。请参阅我的答案中的示例(今天我无法在 cmets 中显示正确的引号)。
  • 对我来说是个坏主意。现在你必须循环其他 4000 个文件。当然,您没有说明可能有一些特殊原因。

标签: stata


【解决方案1】:

您的数据格式很长,对于许多类型的分析来说,这通常是获取数据的最佳方式。但是,如果你真的需要拆分它,这里有一个例子:

clear
set more off

*----- example data -----

input ///
id x
1 38
1 57
1 43
2 35
2 98
end

tempfile main
save `main'

*----- what you want ----

forval i = 1/2 {
    use `main' if id == `i', clear 
    save id`i'
}

这是一个Stata FAQ

【讨论】:

  • 您好 Roberto,感谢您提供详细的 forval 循环。但是,我使用了与您提供链接的相同的 Stata 常见问题解答。我得到“我”无效名称作为错误。这可能是您提到的当地人的报价。实际上,我使用的不是“file.dta”,而是“C:\Users\Windows User\Desktop\Data\timeseries_2000.dta”,它指定了要访问以进行拆分的文件的位置。那你建议用什么?非常感谢您的帮助 - 维罗妮卡
  • 维罗妮卡,我不知道你想要什么样的建议。如果您坚持将文件拆分为 4,000 个其他文件,那么代码就在那里。我唯一的建议是使用/ 而不是\ 作为目录分隔符(参见Nick Cox 的Beware the backstabbing backslash)。如前所述,另一个建议是不要拆分文件,但这是否方便取决于您打算做什么。反正文件不是太大。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 2012-06-26
  • 1970-01-01
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多