[R] Multiple cbind according to filename

Rui Barradas ruipbarradas at sapo.pt
Fri May 25 18:05:57 CEST 2012


Hello,

You can split the filenames vector according to a pattern,

filenames <- c("a1.csv", "a2.csv", "b1.csv", "b2.csv", "c1.csv", "c2.csv")
fnpattern <- gsub("[[:digit:]]", "", filenames)
df.groups <- split(filenames, fnpattern)

and then use this list to process each of the groups of data.frames  in
'alldata', possibly using lapply.

Hpe this helps,

Rui Barradas

BustedAvi wrote
> 
> Hi all,
> 
> I'm just a beginner with R but I have not been able to search for any
> relevant answer to my problem.  I apologize if it has in fact been asked
> before.
> 
> Recently I've realized that I need to combine hundreds of pairs of data
> frames.  The filenames of the frames I need to combine have unique
> strings.
>  This is my best guess as to the approach to take:
> 
>  filenames<-list.files()
> 
> filenames
> [1] "a1.csv" "a2.csv" "b1.csv" "b2.csv" "c1.csv" "c2.csv"
> 
> alldata<-lapply(filenames, read.csv, header=TRUE)
> 
>  names(alldata)<-filenames
>  summary(alldata)
>        Length Class      Mode
> a1.csv 27     data.frame list
> a2.csv 27     data.frame list
> b1.csv 27     data.frame list
> b2.csv 27     data.frame list
> c1.csv 27     data.frame list
> c2.csv 27     data.frame list
> 
> My next step would be to cbind files that share a common string at the
> beginning, such as:
> cbind(alldata[[1]],alldata[[2]])
> cbind(alldata[[3]],alldata[[4]])
> cbind(alldata[[5]],alldata[[6]])
> ...
> 
> but file list is hundreds of files long (but is sorted alphanumerically
> such as in this example - not sure if this is relevant).  If I had to
> guess, I'd do something like this:
> 
> which(names(alldata)==...), to identify which elements to combine based on
> unique filename
> 
> OR
> x<-seq(1,length(alldata), 2)
> y=x+1
> z<-cbind(x,y)
> z
>      x y
> [1,] 1 2
> [2,] 3 4
> [3,] 5 6
> 
> to use the frame created in z to combine based on rows,
> 
> then use a looped cbind function (or *apply function with nested cbind
> function?) using the previously returned indexes to create my new combined
> data frames, including a step to write the frames to a new unique filename
> (not sure how to do that step in this context).  These last steps I've
> tried a lot of code but nothing worth mentioning as it has all failed
> miserably.
> 
> I appreciate the help,
> 
> M
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help@ mailing list
> 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.
> 


--
View this message in context: http://r.789695.n4.nabble.com/Multiple-cbind-according-to-filename-tp4631298p4631346.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list