How do I import .dta from Stata file into MATLAB?

141 views (last 30 days)
JBA Miller
JBA Miller on 12 Feb 2022
Commented: Kai on 5 Apr 2024 at 11:51
Hey community!
I fail to import a .dta data file which should be used by STATA into Matlab. I would need to work with it on Matlab. When I try to import I sometimes get a table in MATLAB, however it is not filled with the actual numerical data but instead with weird text signs... I can't manage.
I attached the file as well, maybe you can help here?
Thanks, best!
  1 Comment
Voss
Voss on 12 Feb 2022
I don't know much about STATA, but can you open this file back in STATA and re-export it as another type that MATLAB can handle, e.g., .xlsx or .csv?

Sign in to comment.

Answers (1)

Lokesh
Lokesh on 6 Oct 2023
Hi Miller,
I understand that you want to import .dta file into MATLAB.
To import the .dta file into MATLAB, we need to first convert .dta file to csv format and then import in MATLAB using readtable.
Please refer to the following steps to import .dta file into MATLAB:
1.Convert the .dta file to csv format:
  • Open the file in Stata and export it as csv file
  • If you do not have access to Stata, you can use Python with Pandas library to convert .dta file to csv. Please refer to the following example code snippet for file conversion:
import pandas as pd
data = pd.io.stata.read_stata('my_stata_file.dta')
data.to_csv('my_stata_file.csv')
2.Once the .dta file is converted to CSV, you can import the data into MATLAB using the readtable function.Here is an example:
Data1 = readtable(my_stata_file.csv);
Please refer to following documentation to know more about “readtable function in MATLAB:
I hope you find this helpful.
Best Regards,
Lokesh
  1 Comment
Kai
Kai on 5 Apr 2024 at 11:51
No.
You don't have to convert .DTA file into other type. Find your file, right click import and in Import selection, you can find the script you need.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!