我有多个观察的原始数据,我有一个清理日志,其中包含原始数据特定列的一些新值,我想用这些新值替换旧值。
我的原始数据是:
raw_df<- data.frame(
id=c(1,2,3,4),
name=c("a","b","c","d"),
age=c(15,16,20,22),
add=c("xyz","bc","no","da")
)
我的清洁日志是:
cleaning_log <- data.frame(
id=c(2,4),
question=c("name","age"),
old_value=c("b",22),
new_value=c("bob",25)
)
我的预期结果是:
result<-data.frame(
id=c(1,2,3,4),
name=c("a","bob","c","d"),
age=c(15,16,20,25),
add=c("xyz","bc","no","da")
)
注意:最后如何检查这些新值是否被正确替换?此外,在清理日志问题列中,我可能有两个以上的列,例如 10 到 20,它们可能会有新值,但在这里我只给出两个列名作为示例。预先感谢您的帮助
找出要在raw_df
使用中更改的行号和列号match
并将其替换为cleaning_log$new_value
。
row_inds <- match(cleaning_log$id, raw_df$id)
col_inds <- match(cleaning_log$question, names(raw_df))
raw_df[cbind(row_inds, col_inds)] <- cleaning_log$new_value
raw_df
# id name age add
#1 1 a 15 xyz
#2 2 bob 16 bc
#3 3 c 20 no
#4 4 d 25 da
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句