You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:25:01