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?
Use ?merge instead of intersect. On February 21, 2019 5:22:46 AM PST, Andras Farkas via R-help <r-help at r-project.org> wrote:>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 at 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.-- Sent from my phone. Please excuse my brevity.
Works well! Thanks!
Andras?
On Thursday, February 21, 2019, 8:47:51 AM EST, Jeff Newmiller <jdnewmil
at dcn.davis.ca.us> wrote:
Use ?merge instead of intersect.
On February 21, 2019 5:22:46 AM PST, Andras Farkas via R-help <r-help at
r-project.org> wrote:>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 at 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.
--
Sent from my phone. Please excuse my brevity.
[[alternative HTML version deleted]]