Stata中CSV的打开部分

Stata中CSV的打开部分,csv,import,stata,Csv,Import,Stata,我想知道更多关于Stata 13如何处理大尺寸的.CSV数据集的信息,比如说比我的RAM更高的数据集 我可以使用以下命令打开第一个第n行或第一个第n列 import delimited using filename.csv, rowrange(1:1000) colrange(1:3) 但是,如果不先加载整个数据集,我似乎无法打开以下内容之一: 第一个和最后三个变量 第一行和最后100行 使变量满足某些条件的行列表 在Stata中有没有办法完成这些事情?我不确定您是否可以用一个命令来完

我想知道更多关于Stata 13如何处理大尺寸的.CSV数据集的信息,比如说比我的RAM更高的数据集

我可以使用以下命令打开第一个第n行或第一个第n列

import delimited using filename.csv, rowrange(1:1000) colrange(1:3)    
但是,如果不先加载整个数据集,我似乎无法打开以下内容之一:

第一个和最后三个变量 第一行和最后100行 使变量满足某些条件的行列表
在Stata中有没有办法完成这些事情?

我不确定您是否可以用一个命令来完成,但您可以尝试按部件导入和使用合并。例如:

clear all
set more off

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

copy http://www.stata.com/examples/auto.csv auto.csv, replace

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

* import first two columns
import delimited using "auto.csv", colrange(1:2) rowrange(1:6)
gen obs = _n

* save in temp file
tempfile first
save "`first'"

* import last two columns
import delimited using "auto.csv", colrange(4:5) rowrange(1:6) clear
gen obs = _n

* merge current data with the tempfile
merge 1:1 obs using "`first'", assert(match) nogen

* list
drop obs
order make foreign price
list
前面的内容涵盖了你问题中的第1点。对于第2点,执行类似的操作,但使用append代替merge

命令infle和use都支持在其语法中使用if和in,这可能对第3点有所帮助

编辑 第2点的示例:


观察值1从第2行开始,第1行包含变量名,因此我们需要将rowrange中的所有内容移位1。奇怪的是,一些测试表明,添加varnames1选项并没有改变这种行为。

我不确定您是否可以用一个命令来实现这一点,但您可以尝试按部件导入并使用merge。例如:

clear all
set more off

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

copy http://www.stata.com/examples/auto.csv auto.csv, replace

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

* import first two columns
import delimited using "auto.csv", colrange(1:2) rowrange(1:6)
gen obs = _n

* save in temp file
tempfile first
save "`first'"

* import last two columns
import delimited using "auto.csv", colrange(4:5) rowrange(1:6) clear
gen obs = _n

* merge current data with the tempfile
merge 1:1 obs using "`first'", assert(match) nogen

* list
drop obs
order make foreign price
list
前面的内容涵盖了你问题中的第1点。对于第2点,执行类似的操作,但使用append代替merge

命令infle和use都支持在其语法中使用if和in,这可能对第3点有所帮助

编辑 第2点的示例:


观察值1从第2行开始,第1行包含变量名,因此我们需要将rowrange中的所有内容移位1。奇怪的是,一些测试表明,添加varnames1选项并没有改变这种行为。

据我所知,这不是事实。对于大型文本文件,我通常的策略是使用SSC中的chunky,或者使用常用的UNIX工具预处理文件,或者使用循环中的导入分隔符,然后连接文件。非常感谢!矮胖的看起来很有用。我也使用诸如awk之类的unix工具,但我喜欢我的程序能够被windows用户直接理解和使用,这是我所不知道的。对于大型文本文件,我通常的策略是使用SSC中的chunky,或者使用常用的UNIX工具预处理文件,或者使用循环中的导入分隔符,然后连接文件。非常感谢!矮胖的看起来很有用。我也使用诸如awk之类的unix工具,但我喜欢让windows用户直接理解和使用我的程序!我想对于第2点,在提取最后100行时,需要添加varnames1选项,以便在每个部分中变量的名称相似。不客气。不需要。不需要添加varnames来确保变量在这两部分中的名称相似。如果使用完全相同的数据源(例如auto.csv和colrange),则每个零件都将获得相同的变量,并且每次调用导入时都以相同的方式指定delimited。我给我的回答增加了一个例子,也考虑一下你的问题的答案。这也会增加你的声誉。您可以阅读详细信息。非常感谢这两条评论。谢谢!我想对于第2点,在提取最后100行时,需要添加varnames1选项,以便在每个部分中变量的名称相似。不客气。不需要。不需要添加varnames来确保变量在这两部分中的名称相似。如果使用完全相同的数据源(例如auto.csv和colrange),则每个零件都将获得相同的变量,并且每次调用导入时都以相同的方式指定delimited。我给我的回答增加了一个例子,也考虑一下你的问题的答案。这也会增加你的声誉。您可以阅读详细信息。非常感谢这两条评论。