77

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

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

File --> "Save as csv"
4

12 回答 12

104

坦率地说,令人难以置信的 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')

惊人!

于 2014-09-15T14:20:49.553 回答
58

You could try doing it through R:

For Stata <= 15 you can use the haven package to read the dataset and then you simply write it to external CSV file:

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

Alternatively, visit the link pointed by huntaub in a comment below.


For Stata <= 12 datasets foreign package can also be used

library(foreign)
yourData <- read.dta("yourStataFile.dta")
于 2010-05-05T21:48:23.593 回答
7

You can do it in StatTransfer, R or perl (as mentioned by others), but StatTransfer costs $$$ and R/Perl have a learning curve.
There is a free, menu-driven stats program from AM Statistical Software that can open and convert Stata .dta from all versions of Stata, see:

http://am.air.org/

于 2010-08-19T02:00:27.470 回答
6

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

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

于 2010-03-29T06:43:41.823 回答
5

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

  • 从CRAN安装 R并打开 R
  • 使用安装rioinstall.packages("rio")
  • 加载rio库,然后使用convert()函数:

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

此方法允许您在多种格式(例如,Stata、SPSS、SAS、CSV 等)之间进行转换。它使用文件扩展名来推断格式并使用适当的导入包加载。更多信息可以在R-project rio 页面上找到。

于 2016-03-24T14:17:02.033 回答
4

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 = ",")
于 2013-03-13T21:59:05.213 回答
3

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

尽管如此,上述两种方法都依赖于使用pandas.io.stata.StataReader.data,它现在是一个遗留功能并且已被弃用。因此,pandas.read_stata现在应该始终使用功能。

根据 的源文件stata.py截至 version 0.23.0,支持以下内容:

Stata 数据文件版本:

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

有效编码:

  • ASCII
  • 美国ASCII码
  • 拉丁语-1
  • latin_1
  • iso-8859-1
  • iso8859-1
  • 8859
  • cp819
  • 拉丁
  • 拉丁语1
  • L1

正如其他人所指出的,该pandas.to_csv功能可用于将文件保存到磁盘中。相关功能numpy.savetxt还可以将数据保存为文本文件。


编辑:

以下详细信息来自help dtaversionStata 15.1:

        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.
于 2018-05-22T16:20:45.893 回答
2

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

如果您使用该程序,请注意您必须选择“ASCII/文本 - 分隔”来处理 .csv 文件而不是 .xls

于 2010-06-25T18:21:13.767 回答
2

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

将熊猫导入为 pd

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

df.to_csv('YourDataName.csv')

于 2020-04-05T17:21:58.863 回答
0

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

于 2018-03-28T12:25:27.177 回答
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')
于 2021-07-16T09:09:17.530 回答
-11

对于那些拥有 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

于 2013-10-02T02:40:27.043 回答