Hello All,

wonder if you have a suggestion for the following:

we have
a<-data.frame(ID=c(1,2,3,4,5,6,7),date=as.POSIXct(seq(as.Date('2011-01-01'),as.Date('2011-01-07'),by
 = 1),format='%m/%d/%Y %H:%M'),z=rnorm(7,1,1))
b<-data.frame(ID=c(1,2,3,11,12,13,14,15),date=as.POSIXct(seq(as.Date('2011-01-01'),as.Date('2011-01-08'),by
 = 1),format='%m/%d/%Y %H:%M'),z=rnorm(8,1,1))
c<-data.frame(ID=c(1,2,3,4,5,6,7,8,9,10),date=as.POSIXct(c(seq(as.Date('2011-01-01'),as.Date('2011-01-05'),by
 = 1),seq(as.Date('2011-01-11'),as.Date('2011-01-15'),by = 1)),format='%m/%d/%Y 
%H:%M'),z=rnorm(10,1,1))
d<-data.frame(ID=c(1,2,3,21,22,23,24,25,26,27,28),date=as.POSIXct(c(as.Date('2011-01-01'),as.Date('2011-11-01'),as.Date('2011-01-03'),seq(as.Date('2011-01-01'),as.Date('2011-01-08'),by
 = 1)),format='%m/%d/%Y %H:%M'),z=rnorm(11,1,1))


#this function will do the obvious and give the IDs that are in all of the data 
frames based on the ID column

intersect_all <- function(a,b,...){
  Reduce(intersect, list(a,b,...))
}

intersect_all(a$ID,b$ID,c$ID,d$ID)


#I would like to extend this (or use another function) where the function would 
give all the rows (ie based on both columns as a condition) that are in all of 
the data frames, so the result should be as below as these 2 rows are in all of 
the data frames (the fact that the rows that are common in all data frames ie 1 
and 3 in my example are I only set up for the sake of convenience, in reality 
their row number in each of the data frames may be different) . The value of z 
is of no particular importance, but once the common rows are identified I would 
want to subset the data frames to get these results:

a[c(1,3),]
b[c(1,3),]
c[c(1,3),]
d[c(1,3),]

much appreciate your input,

thanks

Andras 

______________________________________________
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.

Reply via email to