The Hmisc package lets you assign labels to data. This information is not included when using write.spss from the "foreign" package. This function tries to address that.

write.Hmisc.SPSS(data, datafile, codefile)

Arguments

data

The input data.frame

datafile

The name for the resulting SPSS data file

codefile

The name for the resulting SPSS code file

Value

Two files will be created in your working directory: a script file and a data file that can be used with SPSS

References

http://stackoverflow.com/a/10261534/1270695

Author

Ananda Mahto. Includes code from Chuck Cleland

Examples

df <- data.frame(id = c(1:6), p.code = c(1, 5, 4, NA, 0, 5), p.label = c('Optometrists', 'Nurses', 'Financial analysts', '<NA>', '0', 'Nurses'), foo = LETTERS[1:6]) # Add some variable labels using label from the Hmisc package library(Hmisc)
#> Loading required package: lattice
#> Loading required package: survival
#> Loading required package: Formula
#> Loading required package: ggplot2
#> #> Attaching package: ‘Hmisc’
#> The following objects are masked from ‘package:base’: #> #> format.pval, units
label(df) <- "Sweet sweet data" label(df$id) <- "id blahblah" label(df$p.label) <- "Profession with human readable information" label(df$p.code) <- "Profession code" label(df$foo) <- "Variable label for variable x.var" # modify the name of one varibe to see what happens when exported names(df)[4] <- "New crazy name for 'foo'" df
#> id p.code p.label New crazy name for 'foo' #> 1 1 1 Optometrists A #> 2 2 5 Nurses B #> 3 3 4 Financial analysts C #> 4 4 NA <NA> D #> 5 5 0 0 E #> 6 6 5 Nurses F
#> [1] "downlit" "file96622194e8cf9" "file966221f98c176.so" #> [4] "file9662251fc5f92" "file966225935567d" "file966227fa7d859" #> [7] "file966227faa6f23" "file96622f5c4a8f.txt"
write.Hmisc.SPSS(df, "df.sav", "df.sps")
#> Warning: some variable names were abbreviated
cat(readLines("df.sav"), sep = "\n")
#> 1 1 5 1 #> 2 5 4 2 #> 3 4 3 3 #> 4 NA 1 4 #> 5 0 2 5 #> 6 5 4 6
cat(readLines("df.sps"), sep = "\n")
#> DATA LIST FILE= “df.sav” free #> / id p.code p.label Nwcnf'f' . #> #> VARIABLE LABELS #> id "id blahblah" #> p.code "Profession code" #> p.label "Profession with human readable information" #> Nwcnf'f' "Variable label for variable x.var" #> . #> #> VALUE LABELS #> / #> p.label #> 1 "<NA>" #> 2 "0" #> 3 "Financial analysts" #> 4 "Nurses" #> 5 "Optometrists" #> / #> Nwcnf'f' #> 1 "A" #> 2 "B" #> 3 "C" #> 4 "D" #> 5 "E" #> 6 "F" #> . #> #> EXECUTE.
file.remove("df.sav", "df.sps")
#> [1] TRUE TRUE
setwd(x)