Skip to contents

This is a wrapper around haven::read_spss with some exception handling.

Usage

read_spss(
  file,
  user_na = TRUE,
  id = NULL,
  filename = NULL,
  doi = NULL,
  .name_repair = "unique"
)

Arguments

file

An SPSS file.

user_na

Should user-defined na_values be imported? Defaults to TRUE.

id

An identifier of the tibble, if omitted, defaults to the file name without its extension.

doi

An optional document object identifier.

.name_repair

Defaults to "unique" See tibble::as_tibble for details.

Value

A tibble. Variable labels are stored in the "label" attribute of each variable. It is not printed on the console, but the RStudio viewer will show it. `write_sav()` returns the input `data` invisibly.

Details

`read_sav()` reads both `.sav` and `.zsav` files; `write_sav()` creates `.zsav` files when `compress = TRUE`. `read_por()` reads `.por` files. `read_spss()` uses either `read_por()` or `read_sav()` based on the file extension.

When the SPSS file has columns which are of class labelled, but have no labels, they are read as numeric or character vectors.

See also

Other import functions: pull_survey(), read_csv(), read_dta(), read_rds(), read_surveys()

Examples

# \donttest{
path <- system.file("examples", "iris.sav", package = "haven")
haven::read_sav(path)
#> # A tibble: 150 × 5
#>    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
#>           <dbl>       <dbl>        <dbl>       <dbl>  <dbl+lbl>
#>  1          5.1         3.5          1.4         0.2 1 [setosa]
#>  2          4.9         3            1.4         0.2 1 [setosa]
#>  3          4.7         3.2          1.3         0.2 1 [setosa]
#>  4          4.6         3.1          1.5         0.2 1 [setosa]
#>  5          5           3.6          1.4         0.2 1 [setosa]
#>  6          5.4         3.9          1.7         0.4 1 [setosa]
#>  7          4.6         3.4          1.4         0.3 1 [setosa]
#>  8          5           3.4          1.5         0.2 1 [setosa]
#>  9          4.4         2.9          1.4         0.2 1 [setosa]
#> 10          4.9         3.1          1.5         0.1 1 [setosa]
#> # … with 140 more rows

tmp <- tempfile(fileext = ".sav")
haven::write_sav(mtcars, tmp)
haven::read_sav(tmp)
#> # A tibble: 32 × 11
#>      mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
#>    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1  21       6  160    110  3.9   2.62  16.5     0     1     4     4
#>  2  21       6  160    110  3.9   2.88  17.0     0     1     4     4
#>  3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
#>  4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
#>  5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
#>  6  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
#>  7  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
#>  8  24.4     4  147.    62  3.69  3.19  20       1     0     4     2
#>  9  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
#> 10  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
#> # … with 22 more rows
# }