这是一种典型情况,当您有两个数据集,其中相同的观测值以不同的方式命名,并且您需要重命名其中一个观测值,以便在合并这些集合之前在两个集合中将它们称为相同。
以下示例显然不起作用:
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]]
};
请帮助
答案 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