基于 R 中的多列替换值

麦克斯米克

我有多个观察的原始数据,我有一个清理日志,其中包含原始数据特定列的一些新值,我想用这些新值替换旧值。

我的原始数据是:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章