在没有Stata软件的情况下将dta文件转换为csv

时间:2010-03-29 06:03:55

标签: csv stata file-conversion

有没有办法将dta文件转换为csv

我的计算机上没有安装Stata版本,因此我无法执行以下操作:

File --> "Save as csv"

12 个答案:

答案 0 :(得分:68)

用于Python的坦率令人难以置信的数据分析库Pandas具有读取Stata文件的功能。

安装Pandas后,您可以这样做:

>>> import pandas as pd
>>> data = pd.io.stata.read_stata('my_stata_file.dta')
>>> data.to_csv('my_stata_file.csv')

惊人!

答案 1 :(得分:52)

你可以尝试通过R.对于Stata< = 13 - 有两种选择。

使用haven package读取数据集,然后将其写入外部CSV文件:

library(haven)
yourData = read_dta("path/to/file")
write.csv(yourData, file = "yourStataFile.csv")

或者,在下面的评论中访问huntaub指出的the link


对于Stata< = 12数据集foreign包也可以使用

library(foreign)
yourData <- read.dta("yourStataFile.dta")

答案 2 :(得分:7)

我没试过,但是如果你知道Perl,你可以使用Parse-Stata-DtaReader模块为你转换文件。

该模块有一个命令行工具dta2csv,可以“将Stata 8和Stata 10 .dta文件转换为csv”

答案 3 :(得分:7)

您可以在StatTransfer,R或perl中执行此操作(如其他人所述),但StatTransfer成本$$$和R / Perl具有学习曲线。
AM Statistical Software提供免费的菜单驱动统计程序,可从所有版本的Stata打开和转换Stata .dta,请参阅:

http://am.air.org/

答案 4 :(得分:5)

R方法可靠地运行,并且它对R的了解很少。请注意,使用外包的转换将保留数据,但可能会引入差异。例如,在转换没有主键的表时,将在转换期间插入主键和关联列。

http://www.r-bloggers.com/using-r-for-stata-to-csv-conversion/我建议:

library(foreign)
write.table(read.dta(file.choose()), file=file.choose(), quote = FALSE, sep = ",")

答案 5 :(得分:5)

使用R在几乎任何数据格式之间进行转换的另一种方法是使用rio包。

  • CRAN安装R并打开R
  • 使用rio
  • 安装install.packages("rio")
  • 加载rio库,然后使用convert()功能:

    library("rio")
    convert("my_file.dta", "my_file.csv")
    

此方法允许您在多种格式之间进行转换(例如,Stata,SPSS,SAS,CSV等)。它使用文件扩展名来推断格式并使用适当的导入包加载。有关详细信息,请参阅R-project rio page

答案 6 :(得分:3)

StatTransfer是一个可以在Stata,Excel(或csv),SAS等之间轻松移动数据的程序。它非常用户友好(不需要编程技能)。见www.stattransfer.com

如果您使用该程序,请注意您必须选择“ASCII / Text - Delimited”才能使用.csv文件而不是.xls

答案 7 :(得分:2)

有人提到SPSS,StatTransfer,它们不是免费的。 R和Python(也在上面提到)可能是您的选择。但是个人而言,我想推荐Python,其语法比R更直观。您可以在Python中对Pandas使用几个命令行来读取和导出大多数常用数据格式:

将熊猫作为pd导入

df = pd.read_stata('YourDataName.dta')

df.to_csv('YourDataName.csv')

答案 8 :(得分:1)

SPSS还可以读取.dta文件并将其导出到.csv,但这需要花钱。 PSPP是一个开源的SPSS版本,它很粗糙,也可能能够读取/导出.dta文件。

答案 9 :(得分:1)

在Python中,可以使用statsmodels.iolib.foreign.genfromdta来读取Stata数据集。此外,还有一个上述函数的包装器,可用于直接从Web上读取Stata文件:statsmodels.datasets.webuse

尽管如此,上述两种情况都依赖于pandas.io.stata.StataReader.data的使用,pandas.read_stata现在是遗留功能,已被弃用。因此,现在应始终使用而不是来使用新的source file函数。

根据stata.py的{​​{3}},从版本0.23.0开始,支持以下内容:

Stata数据文件版本:

  • 104
  • 105
  • 108
  • 111
  • 113
  • 114
  • 115
  • 117
  • 118

有效编码:

  • ascii
  • US-ASCII
  • Latin-1的
  • latin_1
  • ISO-8859-1
  • iso8859-1
  • 8859
  • cp819
  • 拉丁语
  • LATIN1
  • L1

正如其他人所说,然后可以使用pandas.to_csv函数将文件保存到磁盘中。相关函数numpy.savetxt也可以保存数据 作为文本文件。

修改

以下详细信息来自Stata 15.1中的help dtaversion

        Stata version     .dta file format
        ----------------------------------------
               1               102
            2, 3               103
               4               104
               5               105
               6               108
               7            110 and 111
            8, 9            112 and 113
          10, 11               114
              12               115
              13               117
              14 and 15        118 (# of variables <= 32,767)
              15               119 (# of variables > 32,767, Stata/MP only)
        ----------------------------------------
        file formats 103, 106, 107, 109, and 116
        were never used in any official release.

答案 10 :(得分:0)

PYTHON - 将目录中的 STATA 文件转换为 CSV

import glob
import pandas

path=r"{Path to Folder}"

for my_dir in glob.glob("*.dta")[0:1]:
    file = path+my_dir  # collects all the stata files
    # get the file path/name without the ".dta" extension
    file_name, file_extension = os.path.splitext(file)

    # read your data
    df = pandas.read_stata(file, convert_categoricals=False, convert_missing=True)

    # save the data and never think about stata again :)
    df.to_csv(file_name + '.csv')

答案 11 :(得分:-10)

对于那些有Stata的人(即使提问者没有),你可以使用它:

outsheet会生成制表符分隔文件,因此您需要指定comma选项,如下所示

outsheet [varlist] using file.csv , comma

另外,如果你想删除标签(默认包含

outsheet [varlist] using file.csv, comma nolabel
小费提示:

http://www.ats.ucla.edu/stat/stata/faq/outsheet.htm