我想用数据帧提供的对替换列中的所有值。我在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])
}
有什么建议吗?预先感谢!