楼主: gtxing
19218 18

[问答] R如何批量读取txt文件再合并? [推广有奖]

11
gtxing 发表于 2016-6-14 20:10:56
qoiqpwqr 发表于 2016-6-14 20:07
filenames
这是代码执行过程,如何看到合并后的结果呢(列表形式)

+ setwd("F:/DATA/")
+ filenames <- list.files()
+ for (file in filenames) {
+   if (!exists("all.data")) {
+     all.data <- read.table(file, header = TRUE)
+   }
+   if (exists("all.data")) {
+     new.data <- read.table(file, header = TRUE)
+     all.data <- rbind(all.data, new.data)
+   }
+ }
+

12
qoiqpwqr 发表于 2016-6-14 20:15:41
gtxing 发表于 2016-6-14 20:10
这是代码执行过程,如何看到合并后的结果呢(列表形式)

+ setwd("F:/DATA/")
要不你发一个文件来看看,不需要整个文件,复制粘贴前几行就行了

13
nuomin 发表于 2016-6-15 09:57:07
读完TXT之后在x上循环函数write(x, file = "targetfile.txt",append = TRUE, sep = " ")就可以了。注意参数append = TRUE,这是在文件后写入的意思,如果append = FALSE就是覆盖了。

14
gtxing 发表于 2016-6-15 17:25:58
qoiqpwqr 发表于 2016-6-14 19:31
大概这个样子
要把第二个if判断改成else,要不然会把new.data多合并一次到all.data,造成数据重复合并了,不知道为什么
不过谢谢,已经解决了,已采纳你的帮助

15
gtxing 发表于 2016-6-15 17:27:50
nuomin 发表于 2016-6-15 09:57
读完TXT之后在x上循环函数write(x, file = "targetfile.txt",append = TRUE, sep = " ")就可以了。注意参数 ...
谢谢,已经rbind后, file = "targetfile.txt"就不适用了吧?

16
gtxing 发表于 2016-6-16 14:53:47
qoiqpwqr 发表于 2016-6-14 19:31
大概这个样子
大神,这个代码会读取F:/DATA下的所有文件,包括.csv文件,但只要读取txt文件,应该怎么写呢

17
nuomin 发表于 2016-6-16 20:25:09
gtxing 发表于 2016-6-15 17:27
谢谢,已经rbind后, file = "targetfile.txt"就不适用了吧?
哦,已经合并了。不过文件如果很多的话,我会选择在磁盘上合并。

18
felixzhao123 发表于 2016-7-4 12:47:32
我给你一个我自己的例子吧,假设在我的D盘DataFolder文件夹下有若干个相同格式的txt文件并且都有表头,则有如下代码,请先安装和加载dplyr包
  1. ### change working directory
  2. setwd("D://DataFolder")
  3. ### batch import text files of traffic data
  4. filelist1 = list.files(pattern = ".*.txt")
  5. Data_Path = lapply(filelist1, function(x)read.table(x, header=T))
  6. all_Data = do.call("bind_rows", Data_Path)
复制代码

19
柠檬半熟 发表于 2019-3-23 09:49:11
请问楼主如果文件的列数不相等可以合并么?我试了下代码,显示Error in match.names(clabs, names(xi)) : 名字同原来已有的名字不相对

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

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