楼主: 莹莹光
3581 4

[问答] r语言批量读取sav文件,再分别批量保存为csv文件?谢谢大家 [推广有奖]

  • 0关注
  • 0粉丝

高中生

87%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
220 点
帖子
14
精华
0
在线时间
24 小时
注册时间
2020-3-20
最后登录
2022-10-31

楼主
莹莹光 发表于 2021-3-31 11:27:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
真心求教,请问如何利用r语言批量读取sav文件,再分别批量保存为csv文件?
目前我只会一个个读取sav文件在一个个保存为csv文件,谢谢各位不吝赐教!

#调整运行的地址

> getwd()

> setwd("D:\\tmpr9t7_s")

#安装foreign

> install.packages("foreign")

> library(foreign)

>  data <- read.spss("15234942807.sav", to.data.frame=TRUE)#注意R软件对大小写敏感

> summary(data)

#导出

> write.csv(data,"D:\tmpr9t7_s\15234942807.csv")

> write.csv(data,"15234942807.csv")

请问如何写一个循环实现r语言批量转换sav文件为csv文件?


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 sav Packages Foreign install

沙发
owenqi 在职认证  学生认证  发表于 2021-4-1 04:20:17
循环也行,向量化也行,看你自己,目录选择有三种情况,实际命名可以根据这三种情况微调,我例子里面用的是第三种情况。
  1. # data_dir <- "sav"        #1 path to folder that holds multiple .sav files
  2. # data_dir <- choose.dir() #2 choose folder manually
  3. # data_dir <- '.'          #3 same folder as the .sav files

  4. sav_files <- fs::dir_ls(data_dir, regexp = "\\.sav$")
  5. sav_data <- lapply(sav_files, haven::read_sav)
  6. names(sav_data) <- gsub('.sav', '', x = names(sav_data))

  7. lapply(1:length(sav_data), function(i) write.csv(sav_data[[i]],
  8.                                                 file = paste0(names(sav_data[i]), ".csv"),
  9.                                                 row.names = FALSE))
复制代码
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
煮酒问剑 + 10 + 3 + 3 精彩帖子
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 论坛币 + 10  学术水平 + 6  热心指数 + 6  信用等级 + 3   查看全部评分

藤椅
乐天天12300 发表于 2021-4-6 14:12:57
  1. library(foreign)
  2. filenames <- list.files(pattern = ".sav$", path = "新建文件夹")
  3. for (i in 1:length(filenames)) {
  4.   filename <- stringr::str_replace_all(filenames[i], ".sav", "")
  5.   outfile <- stringr::str_replace_all(filenames[i], ".sav", ".csv")
  6.   assign(filename, read.spss(filenames[i]))
  7.   write.csv(eval(as.name(filename)), outfile)
  8. }
复制代码

已有 1 人评分论坛币 学术水平 热心指数 收起 理由
煮酒问剑 + 10 + 3 + 3 精彩帖子

总评分: 论坛币 + 10  学术水平 + 3  热心指数 + 3   查看全部评分

板凳
有机骆驼/sun 在职认证  发表于 2021-5-16 21:31:37
library(foreign)

file_list <- list.files("你的地址")
data_list <- list()
n <- 1
for (i in file_list) {
    data <- read.spss(i, to.data.frame=TRUE)#注意R软件对大小写敏感
    data_list[[n]] <- data
    n <- n+1
}

#导出
for (i in data_list) {
    write.csv(i,"你的地址+文件名")
}

报纸
有机骆驼/sun 在职认证  发表于 2021-5-16 21:34:04
library(foreign)

file_list <- list.files("你的地址")
data_list <- list()
n <- 1
for (i in file_list){
    data <- read.spss(i, to.data.frame=TRUE)
    data_list[[n]] <- data
    n <- n+1
}

for (i in data_list){
    write.csv(i,你的地址+文件名)
}

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 09:20