R-用多对替换列值

时间:2019-05-04 10:13:30

标签: r dplyr

我想用数据帧提供的对替换列中的所有值。我在for循环中提出了一个解决方案,考虑到我拥有的数据量,这太慢了。到目前为止,我还没有提出矢量化解决方案。

我要实现的目标如下:

id_name = tibble(Id = c(1,2), Names = c("abc","xyz"))
dt = tibble(ID = rep(c(1,2), each = 5), val = 1:10)

for(i in 1:nrow(dt)){
    replace_value = id_name$Names[which(dt$ID[i] == id_name$Id) ]
    dt$ID[i] = replace_value
}

我尝试过recode(),但是由于我的替换对的最终数目可能大于20,因此我不愿意像recode(dt, `1`="xyz")那样键入每个替换对。

但是似乎不可能将重新编码循环放置, 因为这不起作用(我之前也尝试过使用as.character()进行转换:

for(i in 1:nrow(id_name)){
  dt$ID = recode(dt$ID, id_name$Id[i] = id_name$Names[i])
}

有什么建议吗?预先感谢!

0 个答案:

没有答案