Skip to contents

Writes a data frame to a SAS transport file (.xpt), preserving variable labels and missing value types. Tagged NAs from any source format (SPSS, Stata, SAS) are written as SAS special missing values (.A through .Z, ._).

Usage

write_xpt(data, path, version = 5, name = NULL)

Arguments

data

A data frame to export.

path

Path to the output file. Must end in .xpt.

version

SAS transport file version. Either 5 (default, SAS Transport v5, most compatible) or 8 (SAS Transport v8, supports longer variable names).

name

Member name for the dataset within the transport file. If NULL, derived from the file name. Maximum 8 characters for version 5.

Value

Invisibly returns the file path.

Details

Tagged NA Handling

SAS supports 28 special missing values: . (system missing), .A through .Z, and ._. When exporting data with tagged NAs:

  • From SAS (read_sas(), read_xpt()): Native special missing values are preserved in a full roundtrip.

  • From SPSS (read_spss()): Tagged NAs are written as SAS special missing values. The original SPSS numeric codes (e.g., -9, -8) are not preserved, but the distinct missing value types are.

  • From Stata (read_stata()): Stata extended missing values are mapped to their SAS equivalents.

Limitations

SAS transport files do not store value labels. If your data has value labels, consider using write_spss() or write_xlsx() instead, which preserve full label metadata. Variable labels are preserved.

See also

read_xpt() and read_sas() for importing SAS files, write_spss() for SPSS export, write_stata() for Stata export, write_xlsx() for Excel export

Other data-export: write_spss(), write_stata(), write_xlsx()

Examples

if (FALSE) { # \dontrun{
# Roundtrip: read SAS transport, process, write back
data <- read_xpt("survey.xpt")
data_clean <- data[data$age >= 18, ]
write_xpt(data_clean, "survey_adults.xpt")

# Cross-format: SPSS to SAS transport
data <- read_spss("survey.sav")
write_xpt(data, "survey.xpt")
} # }