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

如何基于已填充行的hs值自动匹配填充desc列的NA值

批量填充desc列NA值:基于hs与desc的对应关系

原始数据集

hs desc
1 34    a
2 53    b
3 64    c
4 54    d
5 34 <NA>
6 34 <NA>
7 53 <NA>
8 53    b
9 53    b
10 53 <NA> 

需求说明

理想状态下hs列的每个值对应唯一固定的desc值,但当前数据集的desc列存在大量NA。由于实际数据中hs值数量极多,无法通过ifelse或dplyr::case_when手动设置条件,需要自动完成:

  1. 扫描已填充行,识别hs与desc的对应关系;
  2. 基于该关系批量填充desc列的所有NA值。

解决方案

方法1:使用dplyr(tidyverse生态)

通过分组后提取每组非NA的desc值,统一替换组内的NA:

library(dplyr)

# 假设数据框名为df
df_filled <- df %>%
  group_by(hs) %>%
  # 提取每组第一个非NA的desc值,用于填充组内所有NA
  mutate(desc = first(na.omit(desc))) %>%
  ungroup()

方法2:使用data.table(适合大数据集)

data.table的分组操作效率更高,适合处理超大规模数据:

library(data.table)

# 将数据框转为data.table格式
setDT(df)
# 按hs分组,用组内第一个非NA的desc填充所有NA
df[, desc := na.omit(desc)[1], by = hs]

说明

  • 如果某个hs分组内的desc全为NA,该组的NA会保留(无可用对应值);
  • 两种方法均假设同一hs对应的非NAdesc值唯一,符合题目中“每个hs对应唯一固定desc”的前提。

内容的提问来源于stack exchange,提问作者Pedro Cardoso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 06:22:41