我需要幫助來解決這個問題。我有兩張桌子。它們有不同的長度。我想根據與第一個表的 ID 匹配將代碼資訊添加到第二個表中。
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>
它應該是這樣的。
d2
year ID code
1 2017 012 <NA>
2 2018 007 <NA>
3 2019 011 <NA>
4 2020 003 CR
5 2021 004 RT
uj5u.com熱心網友回復:
默認情況下已NA創建NA_logical_。它應該與 'd1' 中的列 'code' 屬于同一類 - 字符。因此,要么將列創建為NA_character_或轉換為字符類,as.character然后進行連接
library(data.table)
d2$code <- as.character(d2$code)
setDT(d2)[d1, code := i.code, on = .(ID)]
-輸出
> d2
year ID code
1: 2017 012 <NA>
2: 2018 007 <NA>
3: 2019 011 <NA>
4: 2020 003 CR
5: 2021 004 RT
資料
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")
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/368524.html
標籤:r
