gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 20:22:49 25 4
gpt4 key购买 nike

我想替换 中的值表 中具有相应匹配值的列查找 柱子。我通过 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
..我明白了:
> table
code sn
1: CBa 1
2: CBe 2
3: <NA> 3
4: <NA> 4
5: OOO 5
6: PPP 6
7: <NA> 7
但是,我真正希望的是这样的结果:
> table
code sn
1: CBa 1
2: CBe 2
3: CBa 3
4: CBe 4
5: OOO 5
6: PPP 6
7: CBa 7
本质上:替换是基于分配了所有值的查找(不仅仅是前两个)。我错过了什么?我曾尝试寻找其他解决方案,但建议似乎并不完全是我想要的。感谢任何答案。

最佳答案

我们可以加入on分别来自表和查找的“代码”和“旧”

table[lookup, code := new, on = .(code = old)]
-输出
 table
code sn
1: CBa 1
2: CBe 2
3: CBa 3
4: CBe 4
5: OOO 5
6: PPP 6
7: CBa 7

关于使用 data.table 将表中的列值替换为基于 R 中匹配项的查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67908743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com