问题
Using R, I'm compiling 2400 .csv files into a single csv file. Each csv file to be combined has 2 columns and 10 rows. My problem is to add the source csv file.csv as third column for source reference.
For Example I want to combine "File1.csv" and "File2.csv"
File1.csv:
Column1 Column2
-6 -9.29E-08
-5.9 -8.71E-08
-5.8 -8.19E-08
-5.7 -7.72E-08
-5.6 -7.25E-08
-5.5 -6.81E-08
-5.4 -6.39E-08
-5.3 -6.01E-08
-5.2 -5.64E-08
-5.1 -5.29E-08
File2.csv:
Column1 Column2
-5 -4.94E-08
-4.9 -4.63E-08
-4.8 -4.33E-08
-4.7 -4.04E-08
-4.6 -3.77E-08
-4.5 -3.50E-08
-4.4 -3.26E-08
-4.3 -3.02E-08
-4.2 -2.79E-08
-4.1 -2.57E-08
Expected output is:
Column1 Column2 Source
-6 -9.29E-08 File1.csv
-5.9 -8.71E-08 File1.csv
-5.8 -8.19E-08 File1.csv
-5.7 -7.72E-08 File1.csv
-5.6 -7.25E-08 File1.csv
-5.5 -6.81E-08 File1.csv
-5.4 -6.39E-08 File1.csv
-5.3 -6.01E-08 File1.csv
-5.2 -5.64E-08 File1.csv
-5.1 -5.29E-08 File1.csv
-5 -4.94E-08 File2.csv
-4.9 -4.63E-08 File2.csv
-4.8 -4.33E-08 File2.csv
-4.7 -4.04E-08 File2.csv
-4.6 -3.77E-08 File2.csv
-4.5 -3.50E-08 File2.csv
-4.4 -3.26E-08 File2.csv
-4.3 -3.02E-08 File2.csv
-4.2 -2.79E-08 File2.csv
-4.1 -2.57E-08 File2.csv
Below is the code i have tried to combine multiple csv.
library(plyr)
library(readr)
mydir <- "D:Combining_CSV_Files/raw data"
setwd(mydir)
myfiles = list.files(path=mydir,pattern="*.csv",full.names=TRUE)
dat_csv = ldply(myfiles,read.csv)
#dat_csv
write.csv(dat_csv,"combined_data.csv",row.names = FALSE)
回答1:
what about a simple for
loop?
myfiles <- list.files(path=mydir,pattern="*.csv",full.names=TRUE)
dat_csv <- data.frame()
for(i in myfiles){
dat <- read.csv(paste("./",i,sep=""))
dat$Source <- i
dat_csv <- rbind(dat_csv,dat)
}
write.csv(dat_csv,"combined_data.csv",row.names = FALSE)
来源:https://stackoverflow.com/questions/57604334/r-combine-multiple-csv-files-and-retain-source-csv-file-name-in-an-additional-c