13342 11

[问答] 关于批量处理Excel数据 [推广有奖]

  • 0关注
  • 1粉丝

已卖:5份资源

博士生

80%

还不是VIP/贵宾

-

威望
0
论坛币
842 个
通用积分
0.0004
学术水平
5 点
热心指数
5 点
信用等级
6 点
经验
5905 点
帖子
149
精华
0
在线时间
532 小时
注册时间
2012-10-15
最后登录
2025-11-11

楼主
愤怒的小鸟! 发表于 2015-6-12 09:01:10 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
一直存在这样的问题,就是如何用R语言批量处理Excel表中的数据,为了说明情况,举个简单的例子,我有十个EXCEL表(每个表中数据代表一只股票的数据),每个表中的数据结构均相同(EX:每个表中均包含三列数据,第一列为日期,第二列为股票开盘价,第三列为股票收盘价),我现在要求出每个表中对应日期的开盘价和收盘价的均值,该怎么写程序一次性处理并导出十个表的数据的结果,而不是一个一个的去导入然后实现目标,感激不尽
二维码

扫码加我 拉你入群

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

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

关键词:excel数据 EXCEL 批量处理 xcel exce 开盘价 收盘价 Excel EXCEL 程序

沙发
letsgoaway 发表于 2015-6-12 09:47:22
流水化办公中,通常有格式统一的表格文件产生,但是到最后要将这一堆表格文件整合为大表却很揪心,累断手,如何用R语言进行一次性导入整合呢?
假设我们将D:/input文件夹作为需要导入的表格的存放点,文件夹内所有文件均为此次需要导入数据,那么可以用以下程序进行操作
setwd("D:/")                                                                    #设定工作目录为D盘
a = list.files("input")                                                       #list.files命令将input文件夹下所有文件名输入a
dir = paste("./input/",a,sep="")                                      #用paste命令构建路径变量dir
n = length(dir)                                                                 #读取dir长度,也就是文件夹下的文件个数
merge.data = read.csv(file = dir[1],header=T,sep=",")   #读入第一个文件内容(可以不用先读一个,但是为了简单,省去定义data.frame的时间,我选择先读入一个文件。
for (i in 2:n){
   new.data = read.csv(file = dir[i], header=T, sep=",")
   merge.data = rbind(merge.data,new.data)
}
#循环从第二个文件开始读入所有文件,并组合到merge.data变量中
write.csv(merge.data,file = "./input/merge.csv",row.names=F)  #输出组合后的文件merge.csv到input文件夹

摘自:http://blog.sina.com.cn/s/blog_46d621c00101l66x.html
已有 1 人评分经验 论坛币 收起 理由
李会超 + 40 + 40 精彩帖子

总评分: 经验 + 40  论坛币 + 40   查看全部评分

藤椅
wfldragon 发表于 2015-6-12 12:11:27
read后merge就可以了啊

板凳
wfldragon 发表于 2015-6-12 12:15:58
楼上正解,不过可能要根据你excel的sheet名修改

报纸
愤怒的小鸟! 发表于 2015-6-12 12:26:01
letsgoaway 发表于 2015-6-12 09:47
流水化办公中,通常有格式统一的表格文件产生,但是到最后要将这一堆表格文件整合为大表却很揪心,累断手, ...
非常感谢你的回答,让我学习到以后能用到的知识,在这个问题中,我想实现的最终结果是最后还是产生十个表格,我并不想把他们整合到一个表中

地板
letsgoaway 发表于 2015-6-13 00:20:19
那就把循环中merge.data那一行去掉,用一个list代替new.data,把十个表分别存在list里面

7
愤怒的小鸟! 发表于 2015-6-13 10:58:24
letsgoaway 发表于 2015-6-13 00:20
那就把循环中merge.data那一行去掉,用一个list代替new.data,把十个表分别存在list里面
谢谢啊,对你的程序中我还有一处不太清楚 ,就是你写的那个”读入第一个文件内容(可以不用先读一个,但是为了简单,省去定义data.frame的时间,我选择先读入一个文件“,这一行程序,如果我不想先读入一个,直接从第一个开始读入应该怎么操作

8
letsgoaway 发表于 2015-6-14 09:21:49
愤怒的小鸟! 发表于 2015-6-13 10:58
谢谢啊,对你的程序中我还有一处不太清楚 ,就是你写的那个”读入第一个文件内容(可以不用先读一个,但是 ...
setwd("D:/")                                                                    #设定工作目录为D盘
a = list.files("input")                                                       #list.files命令将input文件夹下所有文件名输
dir = paste("./input/",a,sep="")                                      #用paste命令构建路径变量dir
n = length(dir)                                                                 #读取dir长度,也就是文件夹下的文件个数
data=list()
for (i in 1:n){
  data[] = read.csv(file = dir, header=T, sep=",")
}

循环从1开始,输出的data[[1]]就是第一个数据,data[[2]]就是第二个数据,。。。。

9
lvzhp06 发表于 2016-7-18 16:37:55
letsgoaway 发表于 2015-6-14 09:21
setwd("D:/")                                                                    #设定工作目录为D盘 ...
请问怎么把一个list,相当于多个表格,存入到一个xlsx中呢?

10
lvzhp06 发表于 2016-7-18 16:52:51
知道了,可以用这个函数:writeWorksheetToFile

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 23:56