R语言循环读取excel并保存为RData

之前写过一个循环读取excel的代码,最近又有了新的需求:循环读取xlsx文件中的多个sheet,处理完之后循环输出到xlsx文件中的多个sheet中,总结一下。


1、循环读取csv文件并输出为RData格式

homedir <- "D:/Documents/tina/Database" #设置路径
setwd(homedir)
temp = list.files(pattern="*.csv")
for (i in 1:length(temp)) {
  filename <- substr(temp[i], 1, nchar(temp[i])-4);
  assign(filename, read.csv(temp[i], header = T));
  save(list = filename, file = paste(filename, ".Rdata", sep = ""))
}

有了这段代码,要循环读取xlsx里面的多个sheet就简单多了,毕竟xlsx的文件名都是一致的,只是sheetIndex不一样:

###2、循环读取xlsx文件中的多个sheet:

library(xlsx)
sheet.index <- c(1:12)
data.list <- list()
for(i in sheet.index){
  filename <- paste0("month",i)
  data.list[[i]] <- read.xlsx("E:/某某中心年收入.xls", encoding = "UTF-8", sheetIndex = i)
  assign(filename, data.list[[i]])
}

下面这面这段代码是抄来的,还没来得及尝试能不能循环写入sheet了。
###3、循环创建xlsx中的多个sheet

library(XLConnect)
wb <- loadWorkbook('data.xlsx', create = TRUE) # 创建excel工作簿

# 创建sheet
for (name in paste0('sheet', 1:3)) {
    createSheet(wb, name)
}

# 分别向3个sheet写入数据
writeWorksheet(wb, data_frame_1, 'sheet1')
writeWorksheet(wb, data_frame_2, 'sheet2')
writeWorksheet(wb, data_frame_3, 'sheet3')

saveWorkbook(wb)

作者:匿名用户
链接:https://www.zhihu.com/question/50105110/answer/119472211
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

今天尝试了第3部分的代码,发现循环写入的功能无法实现,于是使用openxlsx包解决该问题。
###4、创建xlsx,写入多个sheet
首先按照网上的教程安装了openxlsx,并进行了实验:

library(openxlsx)

 wb <- createWorkbook()
 addWorksheet(wb, "Sheet 1")
 c1 <- createComment(comment = "this is comment")
 writeComment(wb, 1, col = "B", row = 10, comment = c1)
 s1 <- createStyle(fontSize = 12, fontColour = "red", textDecoration = c("BOLD"))
 s2 <- createStyle(fontSize = 9, fontColour = "black")
 c2 <- createComment(comment = c("This Part Bold red\n\n", "This part black"), style = c(s1, s2))
 c2
 writeComment(wb, 1, col = 6 , row = 3, comment = c2)
 addWorksheet(wb, "Sheet 1")
 saveWorkbook(wb, file = "E:/信和资料/项目/门店绩效/湖南益阳/writeCommentExample.xlsx", overwrite = TRUE)

但在最后保存时报错,因为是在windows环境下,保存时提示安装Rtools,windows系统下安装完成后,需要添加系统变量D:\Rtools\bin;D:\Rtools\gcc-4.6.3\bin,添加完成后,重启电脑,发现保存成功。
下面,需要循环将多个sheet写入xlsx文件中:

wb <- createWorkbook()

addWorksheet(wb,"xsjshouru12")
addWorksheet(wb, "xsjshouru18")
addWorksheet(wb, "xsjshouru24")
addWorksheet(wb, "xsjshouru36")

writeData(wb,"xsjshouru12",xsjshouru12)
writeData(wb,"xsjshouru18",xsjshouru18)
writeData(wb,"xsjshouru24",xsjshouru24)
writeData(wb,"xsjshouru36",xsjshouru36)

#保存到本地文件
saveWorkbook(wb,file = "E:/信和资料/项目/门店绩效/湖南益阳/薪水借.xlsx", overwrite = TRUE)

读入数据:

files = list.files(pattern='*.Rdata')
fload = lapply(files, function(x) get(load(x)))

合并多个数据框

edata4 <- Reduce(function(x,y) merge(x = x, y = y, by = c('lon','lat')),list(dtr01, dtr02, dtr03))

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值