0
df1 <- data.frame(number = c(1,2,3,4,5),value=c(100,200,300,400,500))

df2 <- data.frame(number=c(1,2,3,7,10),value=c(100,200,300,444,555))

I have two dataframes with number as the identifier and values associated. I want to return a df3 which contains "number" that match in each data frame.

  Expected Output df3:
number   value
1       100         
2       200         
3       300         

edit: I think I can use this true/false to subset

df1$number %in% df2$number 
chriswang123456
  • 435
  • 2
  • 10

2 Answers2

1

A data.table solution

# load library
library(data.table)

# set as datatable
lapply(list(df1, df2), \(i) setDT(i))

# inner join
df1[df2, on=.(number), mget(names(df1)), nomatch=0]
Sweepy Dodo
  • 1,761
  • 9
  • 15
0

df3 <- merge(df1, df2, by = c('number', 'value'))