【发布时间】:2017-11-09 11:39:16
【问题描述】:
我有一个缺失值的数据框是某个列(谁没有)。 例如:
df <- data.frame(x = c(2,NA,4), y = 5:7)
df
x y
1 2 5
2 NA 6
3 4 7
我想用不同列的值替换缺失值。显然有很多方法可以做到这一点,例如:
df %>%
mutate(x = ifelse(is.na(x), y, x))
x y
1 2 5
2 6 6
3 4 7
但是,我正在寻找更优雅的东西,例如
df %>% fill(x,y)
但找不到任何东西。这样的事情存在吗?
谢谢!
【问题讨论】:
-
你可以使用 dplyr 的
coalesce函数来代替 ifelse,即df %>% mutate(x = coalesce(x, as.numeric(y))) -
如果有一个纯粹的
tidyr解决方案,我敢打赌它会出现在这里:How to implement coalesce efficiently in R -
感谢您的建议。