Конвертировать файл dta в csv без программного обеспечения Stata
Есть ли способ конвертировать dta
подать в csv
?
У меня не установлена версия Stata на моем компьютере, поэтому я не могу сделать что-то вроде:
File --> "Save as csv"
12 ответов
Откровенно-невероятная библиотека анализа данных для 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')
Удивительно!
Вы можете попробовать сделать это через R. Для Stata <= 13 - есть два варианта.
Используйте пакет убежища, чтобы прочитать набор данных, а затем просто записать его во внешний файл CSV:
library(haven)
yourData = read_dta("path/to/file")
write.csv(yourData, file = "yourStataFile.csv")
Кроме того, посетите ссылку, указанную huntaub в комментарии ниже.
Для Stata <= 12 наборов данных также может использоваться сторонний пакет
library(foreign)
yourData <- read.dta("yourStataFile.dta")
Я не пробовал, но если вы знаете Perl, вы можете использовать модуль Parse-Stata-DtaReader, чтобы конвертировать файл для вас.
Модуль имеет инструмент командной строки dta2csv, который может "конвертировать файлы Stata 8 и Stata 10 .dta в csv".
Вы можете сделать это в StatTransfer, R или Perl (как упоминалось другими), но StatTransfer стоит $$$, а R/Perl имеет кривую обучения.
Существует бесплатная программа статистики на основе меню от AM Statistical Software, которая может открывать и конвертировать Stata.dta из всех версий Stata, см.
Другой способ преобразования практически любого формата данных с использованием R- это пакет rio.
- Установите R из CRAN и откройте R
- Установите
rio
использование пакетаinstall.packages("rio")
Загрузите библиотеку rio, затем используйте
convert()
функция:library("rio") convert("my_file.dta", "my_file.csv")
Этот метод позволяет вам конвертировать между многими форматами (например, Stata, SPSS, SAS, CSV и т. Д.). Он использует расширение файла для определения формата и загрузки, используя соответствующий пакет импорта. Более подробную информацию можно найти на странице R-проекта 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. Кроме того, имеется также оболочка вышеупомянутой функции, которую можно использовать для чтения файла Stata непосредственно из Интернета: statsmodels.datasets.webuse
,
Тем не менее, оба вышеперечисленных полагаются на использование pandas.io.stata.StataReader.data
, которая теперь является устаревшей функцией и устарела. Таким образом, новый pandas.read_stata
Функция теперь должна всегда использоваться вместо.
По данным исходного файла stata.py
по состоянию на версию 0.23.0
поддерживаются следующие:
Версии файла данных Stata:
- 104
- 105
- 108
- 111
- 113
- 114
- 115
- 117
- 118
Допустимые кодировки:
- ASCII
- US-ASCII
- латино-1
- latin_1
- изо-8859-1
- iso8859-1
- 8859
- cp819
- латынь
- latin1
- L1
Как уже отмечалось, pandas.to_csv
Затем можно использовать функцию для сохранения файла на диск. Родственная функция numpy.savetxt
Можно также сохранить данные в виде текстового файла.
РЕДАКТИРОВАТЬ:
Следующие детали поступают из help dtaversion
в Стате 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/Text - Delimited" для работы с файлами.csv, а не.xls
Некоторые упоминали SPSS, StatTransfer, они платные. R и Python (также упомянутые выше) могут быть вашим выбором. Но лично я хотел бы порекомендовать Python, синтаксис намного более интуитивно понятен, чем R. Вы можете просто использовать несколько командных строк с Pandas в Python для чтения и экспорта большинства часто используемых форматов данных:
импортировать панд как 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 (хотя у автора нет), вы можете использовать это:
Otsheet создает файл с разделителями табуляции, поэтому вам нужно указать comma
вариант как ниже
outsheet [varlist] using file.csv , comma
также, если вы хотите удалить ярлыки (которые включены по умолчанию
outsheet [varlist] using file.csv, comma nolabel
шляпа совет: