有没有办法将dta
文件转换为csv
?
我的计算机上没有安装Stata版本,因此我无法执行以下操作:
File --> "Save as csv"
答案 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,请参阅:
答案 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包。
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
开始,支持以下内容:
正如其他人所说,然后可以使用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
小费提示: