小编Efe*_*ano的帖子

使用 data.table 将表中的列值替换为基于 R 中匹配项的查找值

我想用查找列中匹配的相应值替换表列中的值。我通过 data.table 包“通过引用分配”实现了这一点,一个接一个地取一个值(并且它的替换),但我认为我可以做一些更模块化的事情。

总之,我这样做:

# Build a table and a lookup
code<- c("ABC","EBC","ABC","EBC","OOO","PPP","ABC")
sn <- c(1:7)
old<- c("ABC","EBC")
new<- c("CBa","CBe")

lookup <- data.frame(old,new)
table <-data.frame(code,sn)

# Set data.table as TRUE for both
setDT(table)
setDT(lookup)

# Attempt reassignment
table[code %in% lookup$old, code := lookup$new[which(lookup$old==code)]]
table
Run Code Online (Sandbox Code Playgroud)

..我明白了:

> table
   code sn
1:  CBa  1
2:  CBe  2
3: <NA>  3
4: <NA>  4
5:  OOO  5
6:  PPP  6
7: <NA>  7
Run Code Online (Sandbox Code Playgroud)

然而,我真正希望的是这样的结果:

> table
   code sn
1: …
Run Code Online (Sandbox Code Playgroud)

lookup r data.table

4
推荐指数
1
解决办法
41
查看次数

标签 统计

data.table ×1

lookup ×1

r ×1