[R] Reading some csv files from different folders and add the name of each files to the first column of files

Arnaud Mosnier a.mosnier at gmail.com
Mon Jul 27 01:04:23 CEST 2015


Hi Lida,

You can try this:

d<- choose.dir() # choose the folder with the subdirectories containing the
csv files
f <- list.files(d, full.names = TRUE, recursive = TRUE)

# Here the example for the "sing" files
selsing <- grep("sing",f) #Select the files notaining the word sing

allsing <- data.frame() #Create an empty data frame

# Loop among the selected files
for (i in 1:length(f[selsing])){
  dat <- read.csv(file=f[selsing][i])  # suppose that the csv files have a
header
  allsing <- rbind(allsing,data.frame(FileID =
gsub("EA_sing_|.txt","",basename(f[selsing][i])), dat)) #Combine the file
ID with the other columns and add the result to the all sing object
}

Now, you just have to do it for the other cases and save your final object.

Hope this help !

Arnaud

###########################################################################

Date: Sat, 25 Jul 2015 15:03:21 -0500
From: Lida Zeighami <lid.zigh at gmail.com>
To: r-help at r-project.org
Subject: [R] Reading some csv files from different folders and add the
        name of each files to the first column of files
Message-ID:
        <CAMqbV1CXN0=R+HxmaYS40sMymGdbhDQK1V+n5bHmBPgBr3M2Yg at mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"

I have 600 folders in which there are 3 csv files. The name of folders are
as follows: EA_aa, EA_bb, EA_cc, EA_dd,....

In each folder there are 3 csv files:
in folder EA_aa there are:
  EA_sing_aa.csvqwerty
  EA_ska_aa.csv
  EA_tat_aa.csv

In folder EA_bb:
  EA_sing_bb.csv
  EA_ska_bb.csv
  EA_tat_bb.csv
...

I need to read all the same kind of files (for example sing files) in one
dataframe but before that I should add a column to each files with the name
of file as a row names!

So in output I should have just 3 csv files such as
EA_sing.csv: (rbind all EA_sing_*.csv file)
EA_ska.csv: (rbind all EA_ska_*.csv files)
EA_tat.csv: (rbind all EA_tat_*.csv files)

And in each file the first column should be added as row names which
containing the file name! So the format will be as follow:
EA_sing.csv:
1st column   2nd column  3rd column
   aa                    yhhh                ghj
   aa                     k ki                   Fyh
   bb                     k ki                   vgd
   bb                     k gki                  Fyh
   bb                    k reci                  Fyh
   cc                     k hcd                  hyd
   dd                     lmb                     Fyh

EA_ska.csv:
1st column   2nd column  3rd column
   aa                    yhhh                ghj
   aa                     k ki                   Fyh
   bb                     k ki                   Fyh
   cc                     k gki                  Fyh
   cc                     k reci                  oki
   cc                     k hcd                  Fyh
   dd                     lmb                     dsf

EA_tat.csv:
1st column   2nd column  3rd column
   aa                    yhhh                ghj
   aa                     k ki                   Fyh
   bb                     k ki                   Fyh
   cc                     k gki                  Fyh
   cc                     k reci                  oki
   dd                     k hcd                  Fyh
   dd                     lmb                     dsf

Would you please help me how to can I do that?
Thanks

	[[alternative HTML version deleted]]



More information about the R-help mailing list