将 ID 替换为基于单独 "ID code" 的 ID

Replace IDs with IDs based on a separate "ID code"

我有这样的数据:

df <- data.frame(ID = c(11243, 11243, 12335, 12335, 13288), x1 = seq(1, 5), x2 
= seq(42, 46))

我想根据存储在另一个 DF 中的转换 "code" 将 df 中的 "original" ID 更改为 "new IDs":

code <- data.frame(orig_ID = c(11243, 12335, 13288), new_ID = c(1, 2, 3))

df 最后应该是这样的(替换了 ID):

df <- data.frame(ID = c(1, 1, 2, 2, 3), x1 = seq(1, 5), 
x2 = seq(42, 46))

非常感谢任何帮助!

我们可以使用match

df$ID <- code$new_ID[match(df$ID, code$orig_ID)]

使用 dplyr(),如果需要,您可以保留 new_ID 删除 select()

library(dplyr)
df %>% left_join(code,by = c("ID" = "orig_ID")) %>% mutate(ID = new_ID) %>% select(-new_ID)