R语言 使用键列替换data.table中的值

g6ll5ycj  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(112)

我有一个数据集,有3列,V1,V2和V3,我需要替换它们的值。数据集有第四列,其中包含V1、V2和V3中所有可能的值,第五列引用新值。
原始表如下所示:
| V1| V2| V3|值|新值|
| --|--|--|--|--|
| 1 | 3 | 2 | 1 |一|
| 3 | 1 | 4 | 2 |B|
| 5 | 4 | 1 | 3 |C|
所需的最终结果如下所示:
| V1| V2| V3|值|新值|
| --|--|--|--|--|
| 一|C| B| 1 |一|
| C|一| 4 | 2 |B|
| 5 | 4 |一| 3 |C|

d7v8vwbk

d7v8vwbk1#

不确定我是否会赞成你的翻译列在同一个数据集中,尽管如此,这会给予你正确的答案。

library(data.table)
library(stringr)

# select your columns of interest
cols <- 1:3

# create a named vector of your replacements
v <- dt$new_value
names(v) <- dt$value

# loop over the columns and replace values
dt[, (cols) := lapply(.SD, str_replace_all, v), .SDcols = cols]

结果

V1 V2 V3 value new_value
1:  A  C  B     1         A
2:  C  A  4     2         B
3:  5  4  A     3         C

数据

dt <- fread("V1 V2  V3  value   new_value
1   3   2   1   A
3   1   4   2   B
5   4   1   3   C")

相关问题