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

如何在R语言中合并含大量NA的数据集为单条记录?

嗨,这个需求其实挺常见的——就是把同一个ID下分散在多行的非空信息合并到一行里,本质是按ID做聚合提取非空值。我给你几个不同工具的实现方法,你可以根据自己的习惯选:

首先先把你的样本数据整理成直观的表格:

IDTitleComposerLyricistIllustrator
a0018My Western RoseNANANA
a0018NALincoln, Harry J.NANA
a0018NANAVandersloot, F.W.NA
a0018NANANADittmar, W.J.
方法1:Python Pandas实现

如果用Python处理的话,Pandas的分组聚合功能刚好能搞定这个需求:按ID分组后,对每个列提取第一个非空值就行(因为同一个ID下每个列只有一条有效数据)。

import pandas as pd

# 先构造你的样本数据(实际使用时直接读入你的数据集即可)
data = {
    'ID': ['a0018', 'a0018', 'a0018', 'a0018'],
    'Title': ['My Western Rose', None, None, None],
    'Composer': [None, 'Lincoln, Harry J.', None, None],
    'Lyricist': [None, None, 'Vandersloot, F.W.', None],
    'Illustrator': [None, None, None, 'Dittmar, W.J.']
}
df = pd.DataFrame(data)

# 核心操作:按ID分组,对每个列取第一个非空值
merged_df = df.groupby('ID').agg(lambda col: col.dropna().iloc[0]).reset_index()

print(merged_df)

运行后得到的结果就是你想要的单条完整记录:

IDTitleComposerLyricistIllustrator
a0018My Western RoseLincoln, Harry J.Vandersloot, F.W.Dittmar, W.J.
方法2:R语言实现

用R的话,dplyr包的分组+汇总语法同样简洁:

library(dplyr)

# 构造样本数据
data <- tibble(
  ID = c("a0018", "a0018", "a0018", "a0018"),
  Title = c("My Western Rose", NA, NA, NA),
  Composer = c(NA, "Lincoln, Harry J.", NA, NA),
  Lyricist = c(NA, NA, "Vandersloot, F.W.", NA),
  Illustrator = c(NA, NA, NA, "Dittmar, W.J.")
)

# 按ID分组,提取每个列的非空值
merged_data <- data %>%
  group_by(ID) %>%
  summarize(
    Title = first(na.omit(Title)),
    Composer = first(na.omit(Composer)),
    Lyricist = first(na.omit(Lyricist)),
    Illustrator = first(na.omit(Illustrator))
  ) %>%
  ungroup()

print(merged_data)
方法3:Excel无代码实现(Power Query)

如果不想写代码,用Excel的Power Query就能轻松完成:

  • 选中你的数据区域,点击「数据」选项卡 → 「从表格/区域」(如果提示数据有标题就选「我的表格有标题」)
  • 进入Power Query编辑器后,选中ID列,点击「转换」选项卡 → 「分组依据」
  • 在弹出的窗口里:
    • 「分组依据」选择ID
    • 点击「添加聚合」,依次为每个字段(Title、Composer等)设置操作:
      • 「新列名」填和原字段一样的名字
      • 「操作」选「自定义」,然后输入公式List.RemoveNulls([原字段名]){0}(比如List.RemoveNulls([Title]){0})
  • 点击「确定」,然后点击「关闭并上载」,就能得到合并后的单行数据啦

内容的提问来源于stack exchange,提问作者Clara R.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:52:22