web-dev-qa-db-fra.com

Convertir un fichier dta en csv sans logiciel Stata

Est-il possible de convertir un fichier dta en un 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"
65
Brian

La bibliothèque d'analyse de données franchement incroyable pour Python appelé Pandas a une fonction permettant 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!

70
LondonRob

Vous pouvez essayer de le faire via R. Pour Stata <= 13 - il existe deux options.

Utilisez le paquet de 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 site le lien indiqué par huntaub dans un commentaire ci-dessous.


Pour Stata <= 12 jeux de données étranger le package peut également être utilisé

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

Vous pouvez le faire dans StatTransfer, R ou Perl (comme mentionné par d'autres), mais StatTransfer coûte $$$ et R/Perl ont une courbe d'apprentissage.
AM Statistical Software propose un programme de statistiques gratuit piloté par menus qui permet d’ouvrir et de convertir Stata .dta à partir de toutes les versions de Stata. Voir:

http://am.air.org/

7
eric.a.booth

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

Le module a un outil en ligne de commande dta2csv , qui peut "convertir les fichiers Stata 8 et Stata 10 en csv"

7
ghostdog74

Un autre moyen de convertir entre pratiquement tous les formats de données utilisant R consiste à utiliser le package rio .

  • Installez R depuis CRAN et ouvrez R
  • Installez le paquet 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 de nombreux formats (par exemple, 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 le page du projet Rio .

5
Liny C-J

La méthode R fonctionnera de manière fiable et nécessite peu de connaissances de R. Notez que la conversion à l'aide du package étranger préservera 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 = ",")
5
Nels

StatTransfer est un programme qui permet de transférer facilement des données entre Stata, Excel (ou csv), SAS, etc. Il est très convivial (ne nécessite aucune compétence en programmation). Voir www.stattransfer.com

Si vous utilisez le programme, sachez que vous devrez choisir "ASCII/Texte - Délimité" pour travailler avec des fichiers .csv plutôt que .xls

3
dandyjuan

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

1
Nicolas Smoll

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 solutions ci-dessus reposent sur l'utilisation de pandas.io.stata.StataReader.data , qui est maintenant une fonction héritée et qui est obsolète. En tant que telle, la nouvelle fonction pandas.read_stata devrait maintenant toujours être utilisée à la place.

Selon le fichier source de stata.py, À compter 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.


EDIT:

Les détails suivants proviennent de help dtaversion Dans 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.
1
Pearly Spencer