在 R 中将多个 .sav 转换为 .csv

Convert multiple .sav to .csv in R

我想把一堆.sav转换成.csv

我有一个这样的文件列表:

c("Congo_MICS5_Datasets/Congo MICS 2014-15 SPSS Datasets/bh.sav", "Congo_MICS5_Datasets/Congo MICS 2014-15 SPSS Datasets/ch.sav", "Congo_MICS5_Datasets/Congo MICS 2014-15 SPSS Datasets/hh.sav")

如何转换它们并保留文件名?

假设您在可以访问相对路径的工作目录中并假设您正在使用 foreign 包并假设您不需要行名称(很多假设因为问题很稀疏):

c(
  "Congo_MICS5_Datasets/Congo MICS 2014-15 SPSS Datasets/bh.sav", 
  "Congo_MICS5_Datasets/Congo MICS 2014-15 SPSS Datasets/ch.sav", 
  "Congo_MICS5_Datasets/Congo MICS 2014-15 SPSS Datasets/hh.sav"
) -> fils

for (fil in fils) {

  write.csv(
    x = foreign::read.spss(file = fil, to.data.frame = TRUE),
    file = sprintf("%s.csv", tools::file_path_sans_ext(fil)),
    row.names = FALSE
  )

}