使用dplyr替换R数据框列中NA值为0失败的问题
解决dplyr替换NA未生效的问题
哦,这个坑我之前也踩过!你写的merged$number_articles %>% replace_na(0)其实已经生成了替换好NA的向量,但问题在于你没有把这个修改后的结果存回原数据框的对应列里,所以原数据框根本没变化,NA自然还在那儿。
用dplyr处理这类列更新的问题,正确的姿势是结合mutate()函数,它能帮你修改数据框的列并返回新的(或更新后的)数据框。这里有两种常用的写法:
方法1:直接更新原数据框
如果不需要保留原始数据,可以直接把修改后的数据框覆盖原来的merged:
merged <- merged %>% mutate(number_articles = replace_na(number_articles, 0))
方法2:创建新的数据框(保留原数据)
要是想留着原始数据做对比,就把结果存到新的变量里:
merged_updated <- merged %>% mutate(number_articles = replace_na(number_articles, 0))
拓展:批量替换多列的NA
如果你的数据框里还有其他列也需要把NA替换成0,可以用across()来批量处理,比如同时处理number_articles和another_column:
merged <- merged %>% mutate(across(c(number_articles, another_column), ~replace_na(.x, 0)))
执行完上面的代码后,再去查看number_articles列,所有的NA就都变成0啦!
内容的提问来源于stack exchange,提问作者Galadriel
相关产品推荐
相关产品推荐

