有没有办法将dta
文件转换为csv
?
我的计算机上没有安装 Stata 版本,因此无法执行以下操作:
File --> "Save as csv"
有没有办法将dta
文件转换为csv
?
我的计算机上没有安装 Stata 版本,因此无法执行以下操作:
File --> "Save as csv"
坦率地说,令人难以置信的 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')
惊人!
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")
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:
我没有尝试过,但如果你知道 Perl,你可以使用Parse-Stata-DtaReader模块为你转换文件。
该模块有一个命令行工具dta2csv,它可以“将 Stata 8 和 Stata 10 .dta 文件转换为 csv”
使用 R 在几乎任何数据格式之间进行转换的另一种方法是使用rio包。
rio
包install.packages("rio")
加载rio库,然后使用convert()
函数:
library("rio")
convert("my_file.dta", "my_file.csv")
此方法允许您在多种格式(例如,Stata、SPSS、SAS、CSV 等)之间进行转换。它使用文件扩展名来推断格式并使用适当的导入包加载。更多信息可以在R-project rio 页面上找到。
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 = ",")
在 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
,支持以下内容:
正如其他人所指出的,该pandas.to_csv
功能可用于将文件保存到磁盘中。相关功能numpy.savetxt
还可以将数据保存为文本文件。
编辑:
以下详细信息来自help dtaversion
Stata 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.
StatTransfer 是一个可以在 Stata、Excel(或 csv)、SAS 等之间轻松移动数据的程序。它非常用户友好(不需要编程技能)。见 www.stattransfer.com
如果您使用该程序,请注意您必须选择“ASCII/文本 - 分隔”来处理 .csv 文件而不是 .xls
有人提到SPSS、StatTransfer,它们不是免费的。R 和 Python(也如上所述)可能是您的选择。但我个人更推荐 Python,语法比 R 直观得多。你可以在 Python 中使用带有 Pandas 的几个命令行来读取和导出大多数常用的数据格式:
将熊猫导入为 pd
df = pd.read_stata('YourDataName.dta')
df.to_csv('YourDataName.csv')
SPSS 还可以读取 .dta 文件并将其导出为 .csv,但这需要花钱。PSPP 是 SPSS 的一个开源版本,很粗糙,可能也能够读取/导出 .dta 文件。
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')
对于那些拥有 Stata 的人(即使提问者没有),您可以使用它:
outsheet 生成一个制表符分隔的文件,因此您需要指定如下comma
选项
outsheet [varlist] using file.csv , comma
另外,如果您想删除标签(默认情况下包含
outsheet [varlist] using file.csv, comma nolabel
帽子提示: