实际上,我找到了解决方案。如果你跑
use mybigdata if runiform() <= 0.0001
Stata 将随机抽取数据集的 0.0001 个样本,而不读取整个数据集。
谢谢!
文森特
编辑:2015 年 4 月 28 日(美国东部标准时间下午 1:58)
我很抱歉。事实证明,上述内容实际上不是原始问题的解决方案。似乎在我的系统上,使用速度的变化很大
use mybigdata if runiform() <= 0.0001
每次我运行它。当我发布上述是一个解决方案时,我认为当我运行代码时,它恰好是一个更快的实例。但是,正如我现在反复运行的那样
use mybigdata if runiform() <= 0.0001
对比
use in 1/5 using mydata
我真的发现了
use in 1/5 using mydata
平均速度更快。
一般来说,我的问题只是如何读取 Stata 数据集的一部分,而不必为了计算目的而读取整个数据集,尤其是当数据集非常大时。
编辑:2015 年 4 月 28 日(美国东部标准时间下午 2:50)
我总共有 20 个数据集,每个数据集有 5 到 1500 万个观察值。我只需要保留 8 个变量(每个数据集中有 58-65 个变量)。下面是前四个“describe, short”语句的输出。
2004 action1
Contains data from 2004action1.dta
obs: 15,039,576
vars: 64 30 Oct 2014 17:09
size: 2,827,440,288
Sorted by:
2004 action2578
Contains data from 2004action2578.dta
obs: 13,449,087
vars: 59 30 Oct 2014 17:16
size: 2,098,057,572
Sorted by:
2005 action1
Contains data from 2005action1.dta
obs: 15,638,296
vars: 65 30 Oct 2014 16:47
size: 3,143,297,496
Sorted by:
2005 action2578
Contains data from 2005action2578.dta
obs: 14,951,428
vars: 59 30 Oct 2014 17:03
size: 2,362,325,624
Sorted by:
谢谢!
文森特