Convert a dta file to csv without Stata software

前端 未结 11 2054

Is there a way to convert a dta file to a csv?

I do not have a version of Stata installed on my computer, so I cannot do something like: <

相关标签:
11条回答
  • 2020-11-30 22:15

    The R method will work reliably, and it requires little knowledge of R. Note that the conversion using the foreign package will preserve data, but may introduce differences. For example, when converting a table without a primary key, the primary key and associated columns will be inserted during the conversion.

    From http://www.r-bloggers.com/using-r-for-stata-to-csv-conversion/ I recommend:

    library(foreign)
    write.table(read.dta(file.choose()), file=file.choose(), quote = FALSE, sep = ",")
    
    0 讨论(0)
  • 2020-11-30 22:15

    In Python, one can use statsmodels.iolib.foreign.genfromdta to read Stata datasets. In addition, there is also a wrapper of the aforementioned function which can be used to read a Stata file directly from the web: statsmodels.datasets.webuse.

    Nevertheless, both of the above rely on the use of the pandas.io.stata.StataReader.data, which is now a legacy function and has been deprecated. As such, the new pandas.read_stata function should now always be used instead.

    According to the source file of stata.py, as of version 0.23.0, the following are supported:

    Stata data file versions:

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

    Valid encodings:

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

    As others have noted, the pandas.to_csv function can then be used to save the file into disk. A related function numpy.savetxt can also save the data as a text file.


    EDIT:

    The following details come from help dtaversion in 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.
    
    0 讨论(0)
  • 2020-11-30 22:15

    For those who have Stata (even though the asker does not) you can use this:

    outsheet produces a tab-delimited file so you need to specify the comma option like below

    outsheet [varlist] using file.csv , comma
    

    also, if you want to remove labels (which are included by default

    outsheet [varlist] using file.csv, comma nolabel
    

    hat tip to:

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

    0 讨论(0)
  • 2020-11-30 22:19

    I have not tried, but if you know Perl you can use the Parse-Stata-DtaReader module to convert the file for you.

    The module has a command-line tool dta2csv, which can "convert Stata 8 and Stata 10 .dta files to csv"

    0 讨论(0)
  • 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:

    http://am.air.org/

    0 讨论(0)
  • 2020-11-30 22:22

    Another way of converting between pretty much any data format using R is with the rio package.

    • Install R from CRAN and open R
    • Install the rio package using install.packages("rio")
    • Load the rio library, then use the convert() function:

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

    This method allows you to convert between many formats (e.g., Stata, SPSS, SAS, CSV, etc.). It uses the file extension to infer format and load using the appropriate importing package. More info can be found on the R-project rio page.

    0 讨论(0)
提交回复
热议问题