How to Read & Write SPSS Files (.sav) in R Statistical Environment

In data analysis, it is common to encounter data saved in different formats, and being able to read them is crucial. In this blog post, we will focus on reading .sav files in R. These files are created by SPSS, a popular software used for statistical analysis. There are several ways to read .sav files in R, including using the read_sav function from the haven package or the read.spss function from the foreign package. We’ll cover both methods in this post, along with tips on importing data from URLs and converting R dataframes to SPSS files. Additionally, we will explore how to import data from other common formats like CSV and Excel to SPSS files. By the end of this post, you will understand how to read and write SPSS files in R and be ready to tackle any data import challenges you might face in your analysis.

read .sav in R
  • Save
how to import sav in R

Table of Contents

Requirements

To follow this blog post on importing SPSS files in R, there are a few requirements that you need to fulfill. First, you must have data in .sav format to import into R. Second, you will need a basic knowledge of R programming to execute the code examples provided in this post.

In addition, you will need to have the haven package installed in R to import .sav files. If you prefer to use the foreign package instead, you will need to install that package instead. If you want to write R dataframes to SPSS files, you will need the haven or foreign package to do that as well. Here is how to install the packages in R:

install.packagse(c('haven', 'foreign'))Code language: R (r)

Of course, if you only want to use one of them, remove the one you do not want to install. Note, that it might be good to check your version of R and update R if you are running an old version.

To follow the examples in this post, you must have a working internet connection to download the .sav files from a URL, if applicable. Lastly, is important to note that the steps in this post assume that the SPSS files you are importing into R do not require additional data cleaning or wrangling.

To summarize, with the correct data in .sav format, basic knowledge of R, and the necessary packages installed, you can easily follow this post on importing SPSS files in R.

read .sav file in R
  • Save

Data Import in R

R is a great statistical programming environment, and we can store our data in the .rda format. However, sometimes we may collaborate with other researchers using other statistical software and/or storing their data in different formats. Luckily, as an R user, we can import data from a range of different formats; SAS (.7bdat), Stata (.dta), Excel (e.g., .xlsx), and CSV (.csv) to name a few. Here are some tutorials about how to import data from some of these formats:

  • Save
Can R read SPSS files?

In this brief section, we will quickly answer the question: Can R read SPSS files? The short answer is yes! Here’s how:
1) library(haven), and then
2) read_sav(PATH_TO_YOUR_FILE)
Read the post for more details!

How to Open an SPSS .sav File in R

In this section, we will go into more detail on how to load a .sav file into an R dataframe. We will start using the R package haven and then continue using the foreign package.

Importing a .sav file in R using Haven’s read_sav

In this section, we will learn how to load an SPSS file in R using the package Haven and the function read_sav.

First, we are going to start by loading the Haven library:

library(haven)Code language: R (r)

In the second step, we will create the dataframe from the SPSS file using the read_sav function. Note that, when we load a file using the Haven package, it is important to remember that it will look for the file in the R script’s working directory. In the read_sav example below, we will use an example SPSS file. It can be downloaded here and should be put in the correct folder (or change the path in the code chunk below):

df <- read_sav("./SimData/survey_1.sav")Code language: R (r)

In the code chunk above, we create the dataframe df, and we can use the R function head() to display the 10th first rows:

head(df, 10)Code language: R (r)
  • Save
First 10 rows of imported SPSS data

Reading an SPSS file from a URL using R

In this next read SPSS file in R example, we will read a .sav file from a URL. Here we are going to use this dataset. 

df <- read_sav(“http://staff.bath.ac.uk/pssiw/stats2/PsychBike.sav”) 
head(df)Code language: JavaScript (javascript)

Now that you have imported your file, you may want to use R to reshape the data from wide to long to carry out, e.g., probit regression.

Reading a .sav file in R using Foreign’s read.spss

In this section, we will use read.spss from the foreign package. More specifically, we will read SAV files using read.spss. 

df <- read_sav(“http://staff.bath.ac.uk/pssiw/stats2/PsychBike.sav”)
head(df)Code language: R (r)
.sav file imported into R
  • Save

Now, there are some steps we may need to go through before analyzing our data. First, we may want to remove a column (or two columns) in R’s dataframe. Second, we may need to dummy code our categorical variables in R. Finally, we may also want to inspect the data, calculate descriptive statistics, and visualize the data (e.g., with a scatter plot).

Writing R Dataframes to SPSS Files

This section will teach us how to write dataframes to .sav files. We will learn how to load CSV and Excel files into R dataframe objects and then save them as SPSS files.

R from CSV to SPSS files

In this subsection, we are going to read a CSV file in R. After we have read this CSV file we are going to save it as a .sav file.

library(readr) 
df <- read_csv("./SimData/FirstDayData.csv")Code language: R (r)

Now that we have imported the CSV file into an R dataframe, we can save it as an SPSS file using the write_sav function from the Haven package.

library(haven)  
write_sav(df, “./SimData/FirstDayData.csv”)Code language: R (r)
SPSS file exported with R
  • Save

R from Excel to SPSS files

In this subsection, we are going to do the exact same as above, except that we load an Excel file in R.

library(readxl)
df <- read_excel("./SimData/example_concat.xlsx")Code language: R (r)

Now that we have imported the Excel file into an R dataframe. The final thing we will do is to save this dataframe to an SPSS file. Again, we will be using the write_sav function from the Haven package.

library(haven)  
write_sav(df, "./SimData/example_concat.sav")Code language: R (r)
  • Save
Excel file written to an SPSS file using R

Conclusion: Read .sav in R

In this post, you learned how to import .sav files into R. We covered using the Haven and Foreign packages to read SPSS files from both local files and URLs and how to write R dataframes to SPSS files. Additionally, we showed you how to import data from CSV and Excel files into SPSS format.

Through these methods, you can easily and efficiently import your SPSS data into R for analysis. Whether you are working with a large or smaller dataset, these packages provide the flexibility and tools to make data import seamless.

Now that you have learned how to read .sav files in R, please share this post with others who may find it helpful. If you have any questions or suggestions, feel free to comment below. Happy analyzing!

R Tutorials

  • Save

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to Top
Share via
Copy link