【发布时间】:2020-09-22 15:43:22
【问题描述】:
我正在使用新数据帧中的数据更新旧数据帧。
I found this option,它适用于某些领域,但不是全部。不知道如何改变它,因为它超出了我的技能范围。我尝试删除 ifelse 代码的 is.na(x) 部分,但没有成功。
df_old <- data.frame(
bb = as.character(c("A", "A", "A", "B", "B", "B")),
y = as.character(c("i", "ii", "ii", "i", "iii", "i")),
z = 1:6,
aa = c(NA, NA, 123, NA, NA, 12))
df_new <- data.frame(
bb = as.character(c("A", "A", "A", "B", "A", "A")),
z = 1:6,
aa = c(NA, NA, 123, 1234, NA, 12))
cols <- names(df_new)[names(df_new) != "z"]
df_old[,cols] <- mapply(function(x, y) ifelse(is.na(x), y[df_new$z == df_old$z], x), df_old[,cols], df_new[,cols])
该代码还将我的 bb 变量从字符向量更改为数字。我是否需要再次调用 mapply 来关注特定变量 bb?
【问题讨论】: