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

Add data to one table based on matching variable of the second smaller table

I need help in solving this problem. I have two tables. They are of different lengths. I want to add code information to the second table based on ID match with the first.

year <- c(2018,2019,2020,2021)

ID <- c("001","002","003","004")

code <- c("AA", "DD", "CR", "RT")

d1 <- data.frame(year, ID, code)

> d1
  year  ID code
1 2018 001   AA
2 2019 002   DD
3 2020 003   CR
4 2021 004   RT
d2 <- data.frame(year = c(2017, 2018,2019,2020,2021),
  ID = c("012","007","011","003" ,"004"),
  code = NA)

> d2
  year   ID code
1 2017  012 <NA>
2 2018  007 <NA>
3 2019  011 <NA>
4 2020  003 <NA>
5 2021  004 <NA>

It should go like this.

d2
  year   ID code
1 2017  012 <NA>
2 2018  007 <NA>
3 2019  011 <NA>
4 2020  003  CR
5 2021  004  RT

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

>Solution :

The NA created is NA_logical_ by default. It should be the same class as the as the column ‘code’ in ‘d1’ – character. So, either create the columns as NA_character_ or convert to character class with as.character and then do a join

library(data.table)
d2$code <- as.character(d2$code)
setDT(d2)[d1, code := i.code, on = .(ID)]

-output

> d2
   year  ID code
1: 2017 012 <NA>
2: 2018 007 <NA>
3: 2019 011 <NA>
4: 2020 003   CR
5: 2021 004   RT

data

d2 <- structure(list(year = 2017:2021, ID = c("012", "007", "011", 
"003", "004"), code = c(NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_)), row.names = c("1", "2", "3", 
"4", "5"), class = "data.frame")
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