Skip to contents

Import one or more survey files into R using a consistent survey import workflow. The function supports SPSS (`.sav`, `.por`), Stata (`.dta`), R (`.rds`), and CSV files.

Usage

read_surveys(
  survey_paths,
  .f = NULL,
  export_path = NULL,
  ids = NULL,
  dois = NULL,
  ...
)

read_survey(
  file_path,
  .f = NULL,
  export_path = NULL,
  doi = NULL,
  id = NULL,
  ...
)

Arguments

survey_paths

A character vector containing full or relative paths to survey files.

.f

Import function to use. When `NULL`, the appropriate import function is selected automatically from the file extension.

Supported formats are:

`.sav`, `.por`

[read_spss()]

`.dta`

[read_dta()]

`.rds`

[read_rds()]

`.csv`

[read_csv()]

export_path

Optional path where imported surveys should be saved as `.rds` files. Defaults to `NULL`.

ids

Optional survey identifiers.

dois

Optional DOI identifiers for the imported surveys.

...

Additional arguments passed to the import function.

Value

If `export_path = NULL`, a list of imported survey objects.

If `export_path` is provided, a character vector containing exported `.rds` file names.

Imported surveys are returned as data frame-like [survey()] objects with metadata attributes retained for reproducible workflows.

Details

Use [read_survey()] to import a single survey file and `read_surveys()` to import multiple files in a loop.

When `export_path` is `NULL`, imported surveys are returned as a list in memory. When `export_path` is a valid directory, imported surveys are saved as `.rds` files with [base::saveRDS()].

Files that cannot be imported are skipped gracefully. A message is printed and `NULL` is returned for the affected file.

See also

[read_survey()], [survey()]

Other import functions: harmonize_survey_variables(), pull_survey(), read_csv(), read_dta(), read_rds(), read_spss()

Examples

file1 <- system.file(
  "examples",
  "ZA7576.rds",
  package = "retroharmonize"
)

file2 <- system.file(
  "examples",
  "ZA5913.rds",
  package = "retroharmonize"
)

surveys <- read_surveys(
  c(file1, file2),
  .f = "read_rds"
)