R语言按条件使用指定字符串填充数据框NA值的方法有哪些?
针对IMDB数据集指定剧集空值填充的R实现方案
原有代码错误原因
- 管道符后的逻辑不符合dplyr的语法规范,不能直接在管道后接基础R的
if判断赋值 if()做判断时无法自动处理数据框的多行向量化运算,会触发警告或逻辑错误- 要赋值的字符串
Action,Crime,Mystery没有加引号,R会识别为未定义对象报错
实现方案
方案1:dplyr管道写法(适配原有代码书写习惯,无if语句)
使用replace函数定向替换符合条件的位置:
library(dplyr) df <- df %>% mutate(genres = replace( x = genres, list = showTitle == "Money Heist" & is.na(genres), values = "Action,Crime,Mystery" ))
方案2:基础R写法(更简洁,无额外依赖)
直接通过行索引定位赋值:
df$genres[df$showTitle == "Money Heist" & is.na(df$genres)] <- "Action,Crime,Mystery"
两种方案逻辑完全一致:仅匹配showTitle为Money Heist且genres列为空的行做替换,其余行(包括其他剧集的空值)全部保留,和给出的预期输出完全匹配。
内容的提问来源于stack exchange,提问作者Logan Schenkey
相关产品推荐
相关产品推荐

