将Stata中的大文件拆分为较小的文件

将Stata中的大文件拆分为较小的文件,stata,Stata,我在Stata有一个100 MB的文件,每个公司有260个观察结果。我的样本中大约有4000家公司。因此,每个公司的时间序列数据一个接一个地堆叠在一个文件中。我想把这个文件分成更小的文件,一个公司一个文件。我尝试在Stata中使用forval循环,得到的结果是计数器“I”是无效名称。我使用的循环如下所示: forval i=1/4000 { use "file.dta" if internalid=='i',clear save "newfile_'i'" } 您的数据

我在Stata有一个100 MB的文件,每个公司有260个观察结果。我的样本中大约有4000家公司。因此,每个公司的时间序列数据一个接一个地堆叠在一个文件中。我想把这个文件分成更小的文件,一个公司一个文件。我尝试在Stata中使用
forval
循环,得到的结果是计数器“I”是无效名称。我使用的循环如下所示:

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

您的数据是长格式的,对于许多类型的分析,这通常是最好的方法。但是,如果您确实需要拆分它,下面是一个示例:

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。

似乎您在本地使用了错误的开场白。请看我答案中的例子(今天我在评论中找不到正确的引语)。听起来这是个坏主意。现在,您必须循环其他4000个文件。当然,可能有一些特殊的原因你不说。嗨罗伯托,谢谢你的详细forval循环。但是,我使用了与您提供的链接相同的Stata FAQ。我得到了“I”无效名称作为错误。可能是你提到的当地人的报价。实际上,我使用的不是“file.dta”,而是“C:\Users\Windows User\Desktop\Data\timeseries\u 2000.dta”,它指定要进行拆分访问的文件的位置。那你建议用什么?非常感谢你的帮助-维罗妮卡,我不知道你到底想要什么样的建议。如果您坚持将该文件拆分为4000个其他文件,那么代码就是这样做的。我唯一的建议是使用
/
而不是
\
作为目录分隔符(见Nick Cox)。如前所述,另一个建议是不要分割文件,但这是否方便取决于您计划做什么。无论如何,这个文件不是太大。