我有这个数据集,这是一个例子:
df1
State Year ColA ColB ColC
OH 2000 200 190 180
OH 2002 218 200 176
OH 2010 218 205 185
KY 2000 200 190 NA
KY 2002 218 200 NA
KY 2010 218 205 NA
PA 2000 200 190 180
PA 2002 214 200 178
PA 2010 219 205 185
MI 2000 200 190 NA
MI 2002 218 200 NA
MI 2010 218 205 NA
如您所见,我在 ColC 中缺少一些值。我在不同的数据集中有这些值:
df2
State Year ColB ColC_Fill
KY 2000 180 200
KY 2002 176 210
KY 2010 185 211
MI 2000 200 211
MI 2002 200 206
MI 2010 200 205
我想要这个:
df1
State Year ColA ColB ColC
OH 2000 200 190 180
OH 2002 218 200 176
OH 2010 218 205 185
KY 2000 200 190 200
KY 2002 218 200 210
KY 2010 218 205 211
PA 2000 200 190 180
PA 2002 214 200 178
PA 2010 219 205 185
MI 2000 200 190 211
MI 2002 218 200 206
MI 2010 218 205 205
我想用 df2 中的值来填充 df1 中的缺失值。我已经尝试过这段代码:
df$ColC[is.na(df$ColC)]<-left_join(df1[,c(1:2,5)], df2[,c(1:2,4)])
这段代码几天前似乎可以工作,但是当我昨天再次尝试时,它正在用所有变量的列表替换 ColC。我已经尝试了几次迭代,但没有运气。任何帮助,将不胜感激!预先感谢。
条条大路通罗马。这是一个潜在的解决方案:
dataset1 <- dataset1 %>% left_join(dataset2 %>% select(State, Year, ColC_Fill), by = c("State", "Year")) %>% mutate(ColC = ifelse(is.na(ColC), ColC_Fill, ColC) ) %>% select(-ColC_Fill)
首先,我从 dataset2 中按名称选择相关列。然后我在
left_join()
上做一个 "State", "Year"
。第三,我将 ColC 替换为 ColC_fill,其中 ColC 是 NA
。最后,我放弃了 ColC_Fill,因为不再需要它了。