Convertir un fichier dta en csv sans logiciel Stata

Existe-t-il un moyen de convertir un fichier dta fichier csv ?

Je n’ai pas de version de Stata installée sur mon ordinateur, je ne peux donc pas faire quelque chose comme:

 File --> "Save as csv" 

La bibliothèque d’parsing de données franchement incroyable pour Python appelée Pandas a pour fonction de lire les fichiers Stata.

Après avoir installé Pandas vous pouvez simplement faire:

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

Incroyable!

Vous pourriez essayer de le faire avec R. Pour Stata <= 13 - il y a deux options.

Utilisez le package refuge pour lire le jeu de données, puis écrivez-le simplement dans un fichier CSV externe:

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

Sinon, visitez le lien indiqué par huntaub dans un commentaire ci-dessous.


Pour les jeux de données Stata <= 12, un paquet étranger peut également être utilisé

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

Vous pouvez le faire dans StatTransfer, R ou perl (comme mentionné par d’autres), mais StatTransfer coûte $$$ et R / Perl a une courbe d’apprentissage.
AM Statistical Software propose gratuitement un programme de statistiques basé sur des menus, qui peut ouvrir et convertir Stata .dta à partir de toutes les versions de Stata, voir:

http://am.air.org/

Je n’ai pas essayé, mais si vous connaissez Perl, vous pouvez utiliser le module Parse-Stata-DtaReader pour convertir le fichier pour vous.

Le module possède un outil de ligne de commande, dta2csv , qui peut “convertir les fichiers Stata 8 et Stata 10 .dta en fichiers CSV”

La méthode R fonctionnera de manière fiable et nécessite peu de connaissances sur R. Notez que la conversion à l’aide du package étranger préserve les données, mais peut introduire des différences. Par exemple, lors de la conversion d’une table sans clé primaire, la clé primaire et les colonnes associées seront insérées lors de la conversion.

De http://www.r-bloggers.com/using-r-for-stata-to-csv-conversion/ je recommande:

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

Une autre façon de convertir à peu près n’importe quel format de données en utilisant R est d’utiliser le package rio .

  • Installez R depuis CRAN et ouvrez R
  • Installez le paquetage rio en utilisant install.packages("rio")
  • Chargez la bibliothèque rio, puis utilisez la fonction convert() :

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

Cette méthode vous permet de convertir plusieurs formats (Stata, SPSS, SAS, CSV, etc.). Il utilise l’extension de fichier pour déduire le format et le chargement à l’aide du package d’importation approprié. Plus d’informations peuvent être trouvées sur la page R-project rio .

StatTransfer est un programme qui déplace facilement les données entre Stata, Excel (ou csv), SAS, etc. Il est très convivial (ne nécessite aucune connaissance en programmation). Voir http://www.stattransfer.com

Si vous utilisez le programme, notez simplement que vous devrez choisir “ASCII / Text-Delimited” pour utiliser des fichiers .csv plutôt que des fichiers .xls

SPSS peut également lire les fichiers .dta et les exporter au format .csv, mais cela coûte cher. PSPP, une version open source de SPSS, qui est approximative, pourrait également lire / exporter des fichiers .dta.

En Python, on peut utiliser statsmodels.iolib.foreign.genfromdta pour lire les jeux de données Stata. En outre, il existe également un wrapper de la fonction susmentionnée qui peut être utilisé pour lire un fichier Stata directement à partir du Web: statsmodels.datasets.webuse .

Néanmoins, les deux méthodes ci-dessus reposent sur l’utilisation de pandas.io.stata.StataReader.data , qui est désormais une fonction héritée et qui est devenue obsolète. En tant que tel, la nouvelle fonction pandas.read_stata devrait maintenant être utilisée à la place .

Selon le fichier source de stata.py , à partir de la version 0.23.0 , les éléments suivants sont pris en charge:

Versions du fichier de données Stata:

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

Codages valides:

  • ascii
  • nous-ascii
  • latin-1
  • latin_1
  • iso-8859-1
  • iso8859-1
  • 8859
  • cp819
  • Latin
  • latin1
  • L1

Comme d’autres l’ont noté, la fonction pandas.to_csv peut ensuite être utilisée pour enregistrer le fichier sur le disque. Une fonction associée numpy.savetxt peut également enregistrer les données sous forme de fichier texte.


MODIFIER:

Les détails suivants proviennent de la version d’ help dtaversion de 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. 

Pour ceux qui ont Stata (même si le demandeur ne le fait pas), vous pouvez utiliser ceci:

Une feuille externe produit un fichier délimité par des tabulations, vous devez donc spécifier l’option comma comme ci-dessous

 outsheet [varlist] using file.csv , comma 

également, si vous souhaitez supprimer des étiquettes (qui sont incluses par défaut

 outsheet [varlist] using file.csv, comma nolabel 

astuce pour:

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