如何有效地用data.table中的另一组值替换一组值?

时间:2019-05-08 15:45:42

标签: r data.table

这是一种典型情况,当您有两个数据集,其中相同的观测值以不同的方式命名,并且您需要重命名其中一个观测值,以便在合并这些集合之前在两个集合中将它们称为相同。

以下示例显然不起作用:

dt <- data.table( chapter=as.character(11:15) );dt
in_old_set <- c("12", "11", "14", "15")
in_new_set <- c("11", "12", "15", "16")

for(i in 1:length(in_old_book)) {
 dt[chapter == in_old_set[i], chapter:= in_new_book[i]]
};

请帮助

1 个答案:

答案 0 :(得分:1)

在另一个data.table中合并旧值和新值,然后执行“查找分配”。

replacements <- data.table(
  old = c("12", "11", "14", "15"),
  new = c("11", "12", "15", "16")
)

dt[
  replacements,
  on = c(chapter = "old"),
  chapter := new
]

dt
#    chapter
# 1:      12
# 2:      11
# 3:      13
# 4:      15
# 5:      16