[R] subset rows in two dataframes

partofy at inoutbox.com partofy at inoutbox.com
Sun May 11 15:50:35 CEST 2008


Dear list:

I can now reproduce with a bit of my real data, the problem I asked for
your help yestarday:

time1<- as.Date(c("2006-01-03", "2006-05-03", "2006-05-04",
"2006-05-11", "2006-05-12", "2006-05-16", "2006-05-19", "2006-05-26",
"2006-09-15", "2006-10-30", "2006-11-08", "2006-11-14", "2006-11-20"))
volume1<- c(7312.5, 3352.5, 4252.5, 3825.0, 2700.0, 585.0, 810.0,
3015.0, 2925.0, 1102.5, 2632.5, 652.5, 1417.5)
dat1<- data.frame(v1=time1, v2=volume1)

time2<- as.Date(c("2006-05-03", "2006-05-09", "2006-05-04",
"2006-05-08", "2006-07-14", "2006-07-10", "2006-05-12", "2006-05-17",
"2006-05-19", "2006-05-26", "2006-05-29", "2006-05-18", "2006-05-22",
"2006-07-03", "2006-07-05", "2006-07-06", "2006-07-04", "2006-07-24",
"2006-07-12", "2006-07-18"))
volume2<- c(4522.5, 7065.0, 3622.5, 7875.0, 3532.5, 3667.5, 6480.0,
4612.5, 4005.0, 10350.0, 5310.0, 6345.0, 7177.5, 5107.5, 4837.5, 3352.5,
4050.0, 6772.5, 7290.0, 5625.0)
dat2<- data.frame(v1=time2, v2=volume2)

subset(dat1, v1 %in% dat2$v1 & v2 %in% dat2$v2)
          v1     v2
2 2006-05-03 3352.5

This is not what I expect since this row is not present in dat2 and I
just want records present in both dataframes.

Help?

J





On Sat, 10 May 2008 18:42:51 -0400, "jim holtman" <jholtman at gmail.com>
said:
> This seems to work for me:
> 
> > set.seed(1)
> > df1 <- data.frame(v1=factor(sample(1:4,20,TRUE)), v2=factor(sample(1:3,20,TRUE)), v3=sample(1:3,20,TRUE))
> > df2 <- data.frame(v1=factor(sample(1:2,20,TRUE)), v2=factor(sample(1:2,20,TRUE)), v3=sample(1:2,20,TRUE))
> > subset(df1, (df1$v1 %in% df2$v1) & (df1$v2 %in% df2$v2) & (df1$v3 %in% df2$v3))
>    v1 v2 v3
> 2   2  1  2
> 5   1  1  2
> 11  1  2  2
> 14  2  1  1
> >
> 
> Exactly what problems are you having?  A sample of your actual data
> would be useful.
> 
> On Sat, May 10, 2008 at 6:31 PM,  <partofy at inoutbox.com> wrote:
> > Dear list:
> >
> > I have two dataframes, say dat1 and dat2. Each has several variables but
> > 3 of each are common in both, (say v1, v2 and v3). v1 and v2 are
> > factores while v3 is numeric. Now, I need a subset to extract the rows
> > in which v1, v2 and v3 are the same in both dataframes.
> > I tried:
> >
> > subset(dat1, dat1$v1 %in% dat2$v1 & dat1$v2 %in% dat2$v2 & dat1$v3 %in%
> > dat2$v3)
> >
> > I dont know why, but this is not working as I was expecting. Any
> > suggestion to improve my code?
> >
> > Thanks in advance
> >
> > Justin
> > --
> >
> >  partofy at inoutbox.com
> >
> > --
> >
> > ______________________________________________
> > R-help at r-project.org 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.
> >
> 
> 
> 
> -- 
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
> 
> What is the problem you are trying to solve?
-- 
  
  partofy at inoutbox.com

--



More information about the R-help mailing list