[R] File conca.

Val v@|kremk @end|ng |rom gm@||@com
Wed Nov 6 03:24:15 CET 2019


Thank you Petr and Jeff fro your suggestions.

I made some improvement but  still need some tweaking.  I could not
get correctly the folders names added to each row. Only the last
forename was added.
table(Alldata$oldername) resulted
   week2
    25500

Please see the complete,

####################################################
folders=c("week1","week2")
for(i in folders){
  path=paste("\data\"", i , sep = "")
  wd <-  setwd(path)
  Flist = list.files(path,pattern = "^WT")
  dataA =  lapply(Flist, function(x)read.csv(x, header=T))
  setwd(wd)
  temp = do.call("rbind", Alldata)
  temp$foldername <- i
  Alldata <- temp
  Alldata <- rbind(Alldata, temp)
}
#######################################################
Any suggestion please?


On Tue, Nov 5, 2019 at 2:13 AM PIKAL Petr <petr.pikal using precheza.cz> wrote:
>
> 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-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
> 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 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