将多个 .csv 文件合并为一个

5

我知道这个问题已经被问了多次,但是尽管我尝试了上述的解决方案,我仍然无法解决我的小问题:

我已经把所有我想要合并成一个文件夹的.csv文件保存好了:

> file_list <- list.files()
> file_list[]
[1] "SR-einfam.csv"           "SR-garage.csv"           "SR-hotel.csv"           
[4] "SR-IndustrieGewerbe.csv" "SR-mehrfam.csv"          "SR-OffG.csv"  

我使用do.call函数将它们合并。注意所有文件的格式都相同。

sr.master <- do.call("rbind", lapply(file_list, read.csv,  sep = ";", header = TRUE)) 
names(sr.master)
str(sr.master)

然而,在检查我的结果文件后,我意识到只有第一个文件被导入了。这个问题是什么原因造成的?
> str(sr.master)
'data.frame':   1941 obs. of  8 variables:
 $ Berechnung: Factor w/ 51 levels "Berechnung 1",..: 51 1 12 23 34 45 47 48 49 50 ...
 $ Situation : Factor w/ 13 levels "Nach Massnahme 0",..: 6 6 6 6 6 6 6 6 6 6 ...
 $ Sachrisiko: num  1857 1857 1857 1337 1342 ...
 $ PID       : int  2844 2844 2844 2844 2844 2844 2844 2844 2844 2844 ...
 $ Case      : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Differenz : num  0 0 0 -28 -27.7 ...
 $ Prozess   : Factor w/ 1 level "Murgang": 1 1 1 1 1 1 1 1 1 1 ...
 $ Objektart : Factor w/ 1 level "Einfamilienhaus": 1 1 1 1 1 1 1 1 1 1 ...

运行 lapply(file_list, read.csv, sep = ";", header = TRUE) 只会有警告吗? - Roman
@Parth Chaudhary 我的数据是以 ";" 分隔的。 - Nneka
@Danka,只是一个想法...在单独读取文件后尝试使用rbind。这是否有效? - parth
@Parth Chaudhary和其他所有人 - 感谢你们的帮助。我刚意识到问题出在个别文件中。合并实际上可以使用我在问题中编写的代码。- 我应该删除这个问题吗?我的意思是这是错误的问题,不会对任何人有所帮助... - Nneka
1
@Danka,你应该删除这个帖子。它可能最终会被关闭并删除,但你可以自己做,以避免给社区带来麻烦。 - lmo
显示剩余2条评论
2个回答

7
# Get file list
  file_list <- list.files()

# Read all csv files in the folder and create a list of dataframes
  ldf <- lapply(file_list , read.csv)

# Combine each dataframe in the list into a single dataframe
  df.final <- do.call("rbind", ldf)

这个答案对我来说最好,因为它将第一行加载为顶部行。谢谢。 - TheSciGuy

5

以下是使用 fread{data.table} 读取并绑定多个 .csv 文件为一个数据框的简单方法(也可能是最快的方法)

# Load library
  library(data.table)

# Get a List of all files in directory named with a key word, say all `.csv` files
  filenames <- list.files("C:/your/folder", pattern="*.csv", full.names=TRUE)

 # read and row bind all data sets
   data <- rbindlist(lapply(filenames,fread))

如果您想将所有数据文件绑定成一个数据框列表,只需执行以下简单操作:

# Load data sets
  list.DFs <- lapply(filenames,fread)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接