Hi Help with such operations is rather tricky as only you know exact structrure of your folders.
see some hints in line > -----Original Message----- > From: R-help <r-help-boun...@r-project.org> On Behalf Of Val > Sent: Tuesday, November 5, 2019 4:33 AM > To: r-help@R-project.org (r-help@r-project.org) <r-help@r-project.org> > Subject: [R] File conca. > > Hi All, > > I have data files in several folders and want combine all these files in one > file. In each folder there are several files and these > files have the same structure but different names. First, in each > folder I want to concatenate(rbind) all files in to one file. While I am > reading each files and concatenating (rbind) all files, I want to added the > folder name as one variable in each row. I am reading the folder names > from a file and for demonstration I am using only two folders as shown > below. > Data\week1 # folder name 1 > WT13.csv > WT26.csv ... > WT10.csv > Data\week2 #folder name 2 > WT02.csv > WT12.csv > > Below please find my attempt, > > folders=c("week1","week2") > for(i in folders){ > path=paste("\data\"", i , sep = "") > setwd(path) you should use wd <- setwd(path) which keeps the original directory for subsequent use > Flist = list.files(path,pattern = "^WT") > dataA = lapply(Flist, function(x)read.csv(x, header=T)) > Alldata = do.call("rbind", dataA) # combine all files > Alldata$foldername=i # adding the folder name > now you can do setwd(wd) to return to original directory } > The above works for for one folder but how can I do it for more than one > folders? You also need to decide if you want all data from all folders in one object called Alldata or if you want several Alldata objects, one for each folder. In second case you could use list structure for Alldata. In the first case you could store data from each folder in some temporary object and use rbind directly. something like temp <- do.call("rbind", dataA) temp$foldername <- i Alldata <- temp in the first cycle and Alldata <- rbind(Alldata, temp) in second and all others. Or you could initiate first Alldata manually and use only Alldata <- rbind(Alldata, temp) in your loop. Cheers Petr > > Thank you in advance, > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting- > guide.html > and provide commented, minimal, self-contained, reproducible code.
______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.