【发布时间】:2021-05-16 16:11:32
【问题描述】:
假设我有以下数据框:
ABC1_old <- c(1, 5, 3, 4, 3, NA, NA, NA, NA, NA)
ABC2_old <- c(4, 2, 1, 1, 5, NA, NA, NA, NA, NA)
ABC1_adj <- c(NA, NA, NA, NA, NA, 5, 5, 1, 2, 4)
ABC2_adj <- c(NA, NA, NA, NA, NA, 3, 2, 1, 4, 2)
df <- data.frame(ABC1_old, ABC2_old, ABC1_adj, ABC2_adj)
我想创建一个列,将每对 ABCn_old 与其对应的 ABCn_adj 进行比较。 (因此ABC1_old 将与ABCn_adj 等进行比较。)生成的列将称为ABCn_new。判断为ABCn_old为NA,则用ABCn_adj中的对应值填空,否则使用ABCn_old的值。新列将如下所示:
df$ABC1_new <- c(1, 5, 3, 4, 3, 5, 5, 1, 2, 4)
df$ABC2_new <- c(4, 2, 1, 1, 5, 3, 2, 1, 4, 2)
我知道一个简单的mutate 可以在这里工作,但如果可能的话,我想通过purrr 使用某种tidyverse 循环,因为实际上数据集要大得多。有什么实现这一目标的最佳方法的想法吗?
【问题讨论】: