如何在R语言dataframe中用前置值替换指定__NA__值
解决方案:填充字符串型"NA"为前一行有效值
注意:你的数据中__NA__是字符串类型的占位符,并非R原生的NA值,因此需要针对性处理。以下提供两种常用方法:
方法一:Base R 实现
无需额外安装包,直接用基础函数完成:
# 创建示例数据 df <- data.frame(drug = c("__Drug A__", "__NA__", "__Drug B__", "__NA__", "__Drug C__", "__NA__")) # 生成分组ID:每遇到非__NA__的行就开启新分组 group_ids <- cumsum(df$drug != "__NA__") # 按分组填充每组的第一个有效值 df$drug <- ave(df$drug, group_ids, FUN = function(x) x[1]) # 输出结果 df
方法二:Tidyverse 实现
使用dplyr和tidyr包,代码更简洁直观:
library(dplyr) library(tidyr) # 创建示例数据 df <- data.frame(drug = c("__Drug A__", "__NA__", "__Drug B__", "__NA__", "__Drug C__", "__NA__")) # 将字符串__NA__转为原生NA,再向下填充有效值 df <- df %>% mutate(drug = na_if(drug, "__NA__")) %>% fill(drug) # 输出结果 df
两种方法运行后,都能得到你期望的结果:
# 最终输出 drug 1 __Drug A__ 2 __Drug A__ 3 __Drug B__ 4 __Drug B__ 5 __Drug C__ 6 __Drug C__
内容的提问来源于stack exchange,提问作者Stephen Okiya
相关产品推荐
相关产品推荐

