Reputation: 47
I have two data frames with approx. 1 million records now I am trying to check if Uniq_ID present in df2 and not present in df1 for city = mum. then mutate df2 with 1 or 0 for true or false.
df1 <- data.frame(ID =c("DEV2962","KTN2252","ANA2719","ITI2624","DEV2698","HRT2921","","KTN2624","ANA2548","ITI2535","DEV2732","HRT2837","ERV2951","KTN2542","ANA2813","ITI2210"),
city=c("del","mum","mum","pun","bang","mum","triv","vish","mum","mum","bang","vish","mum","kol","noi","mum"))
df2 <- data.frame(Uniq_ID =c("DEV2962","KTN2252","ANA2719","H7236","DEV2692","HRT2921","","KTN2624","ANA2548","ITI2535","DEV2732","HRT2831","ERV2951","KTN2542","ANA2813","ITI2210"),
city=c("del","mum","bho","pun","mum","chen","mum","vish","mum","mum","bang","mum","mum","kol","noi","mum"))
Upvotes: 0
Views: 50
Reputation: 11584
We can use base R in that case. Does this work:
> df2$ID_not_in_df1 <- ifelse(!df2$Uniq_ID %in% df1$ID & df2$city == 'mum', 1 ,0)
> df2
Uniq_ID city ID_not_in_df1
1 DEV2962 del 0
2 KTN2252 mum 0
3 ANA2719 bho 0
4 H7236 pun 0
5 DEV2692 mum 1
6 HRT2921 chen 0
7 mum 0
8 KTN2624 vish 0
9 ANA2548 mum 0
10 ITI2535 mum 0
11 DEV2732 bang 0
12 HRT2831 mum 1
13 ERV2951 mum 0
14 KTN2542 kol 0
15 ANA2813 noi 0
16 ITI2210 mum 0
>
Upvotes: 1
Reputation: 389047
You can assign 1 to Uniq_ID
in df2
which is not present in df1
and which has city = 'mum'
.
df2$ID_not_in_df1 <- +(!df2$Uniq_ID %in% unique(df1$ID) & df2$city == 'mum')
df2
# Uniq_ID city ID_not_in_df1
#1 DEV2962 del 0
#2 KTN2252 mum 0
#3 ANA2719 bho 0
#4 H7236 pun 0
#5 DEV2692 mum 1
#6 HRT2921 chen 0
#7 mum 0
#8 KTN2624 vish 0
#9 ANA2548 mum 0
#10 ITI2535 mum 0
#11 DEV2732 bang 0
#12 HRT2831 mum 1
#13 ERV2951 mum 0
#14 KTN2542 kol 0
#15 ANA2813 noi 0
#16 ITI2210 mum 0
Upvotes: 0