Skip to content

Merge two data frames and find common values and non-matching values

5 messages · francy, William Dunlap, Sarah Goslee +1 more

#
Start out with merge():
  > df <- merge(df1, df2, all.x=TRUE) # could add by="location" for emphasis
  > df
    location      Name Position Country
  1       36  cristina        B    <NA>
  2       75 francesca        A      UK
You could make make your 'Match' column from is.na(df$Country) if you 
knew that df2$Country were never NA.  Otherwise you can add a fake
variable to the merge to tell which output rows come from unmatched
rows in the first data.frame:

  > df12 <- merge(df1, cbind(df2, fromDF2=TRUE), all.x=TRUE, by="location")
  > df12$Match <- !is.na(df12$fromDF2)
  > df12
    location      Name Position Country fromDF2 Match
  1       36  cristina        B    <NA>      NA FALSE
  2       75 francesca        A      UK    TRUE  TRUE

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
#
Hi,
On Mon, Oct 3, 2011 at 1:54 PM, francy <francy.casalino at gmail.com> wrote:
Sounds like you need merge() (just as in your subject line!).
Sarah