在R语言中如何将数据框内的#DIV/0!异常值批量替换为0
解决方案
方法1:基础R实现(无需加载第三方包)
直接遍历整个数据框匹配#DIV/0!并替换为0:
# 全数据框替换异常值 fortuna_CD[fortuna_CD == "#DIV/0!"] <- 0 # 可选:将所有数值相关列转为数值类型(避免后续计算均值/标准差时报错) cols_to_convert <- !colnames(fortuna_CD) %in% c("Playing.Position", "Week") fortuna_CD[cols_to_convert] <- lapply(fortuna_CD[cols_to_convert], as.numeric)
方法2:tidyverse/dplyr实现(代码更易读,灵活度更高)
如果需要指定替换列、或者后续还要做其他数据处理,推荐用这个方法:
library(dplyr) fortuna_CD <- fortuna_CD %>% # 遍历所有列替换异常值 mutate(across(everything(), ~ifelse(.x == "#DIV/0!", 0, .x))) %>% # 将除位置、周次外的所有列转为数值类型 mutate(across(-c(Playing.Position, Week), as.numeric))
验证替换结果
执行完替换后可以运行下面的代码,确认所有异常值都被清理:
sum(fortuna_CD == "#DIV/0!") # 正常应该返回0,说明没有剩余的#DIV/0!值
内容的提问来源于stack exchange,提问作者xhi4m
相关产品推荐
相关产品推荐

