[R] File conca.

PIKAL Petr petr@p|k@| @end|ng |rom prechez@@cz
Tue Nov 5 09:13:19 CET 2019


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-bounces using r-project.org> On Behalf Of Val
> Sent: Tuesday, November 5, 2019 4:33 AM
> To: r-help using R-project.org (r-help using r-project.org) <r-help using r-project.org>
> Subject: [R] File conca.
> Hi All,
> I have data files in several folders and want combine all  these files in
> 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
> 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


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

something like

temp <- do.call("rbind", dataA)
temp$foldername <- i

Alldata <- temp
in the first cycle
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.


> Thank you in advance,
> ______________________________________________
> R-help using 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.

More information about the R-help mailing list