Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

how to use merge function by id, but avoid .y

I have a question about merge function, there are three dataframe down below,

df1 <- data.frame("id"=c(1:6), "v1"=c(200, 300, 400, 500, 600, 200), 
                  "v2"=c(5, 6, 7, 8, 12, 44))

df2 <- data.frame("id"=c(2, 4, 7, 9), "v3"=c(2, 5, 8, 22))

df3 <- data.frame("id"=c(1, 3, 11, 22), "v3"=c(15, 17, 33, 22))

df1
id  v1 v2
1  1 200  5
2  2 300  6
3  3 400  7
4  4 500  8
5  5 600 12
6  6 200 44

df2
  id v3
1  2  2
2  4  5
3  7  8
4  9 22

df3
  id v3
1  1 15
2  3 17
3 11 33
4 22 22

What I want to do is left join by id by merge function, just like down below,

  id  v1 v2   v3
1  1 200  5   15   
2  2 300  6    2   
3  3 400  7   17   
4  4 500  8    5   
5  5 600 12   NA   
6  6 200 44   NA   

but my result is

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

df1 <- merge(df1, df2, by="id", all.x = T)
df1 <- merge(df1, df3, by="id", all.x = T)

df1
  id  v1 v2 v3.x v3.y
1  1 200  5   NA   15
2  2 300  6    2   NA
3  3 400  7   NA   17
4  4 500  8    5   NA
5  5 600 12   NA   NA
6  6 200 44   NA   NA

Can someone help me, I can’t find the relative question here, thank you!

>Solution :

Try with

merge(df1, rbind(df2, df3), by="id", all.x = T)
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading