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

将分散的变量值整理为整洁的单行宽格式(R语言)

R中合并同ID多行分散值并去除NA的解决方案

问题场景

将JSON文本文件转换为dataframe后,出现同ID的变量值分散在多行的情况,原本600条观测变成37200条,且存在大量NA。示例数据如下:

Var1    Var2   Var3  Var4   Var5   Var6   ID
1   4       NA     NA    NA     NA     NA    1
2   NA      3      2     NA     NA     NA    1
3   NA      NA     NA    1      8      NA    1
4   NA      NA     NA    NA     NA     7     1

期望得到的合并后结果:

Var1    Var2   Var3  Var4   Var5   Var6   ID
1   4       3      2     1       8     7      1

由于变量多达146个,手动处理或创建滞后变量效率极低,需要高效的批量处理方案。

解决方案

使用tidyverse包中的dplyr工具,按ID分组后提取每个变量的非NA值合并成一行:

library(dplyr)

# 假设你的数据框名为df
clean_df <- df %>%
  group_by(ID) %>%
  summarise(across(everything(), ~first(na.omit(.x)))) %>%
  ungroup()

代码说明

  • group_by(ID):按ID分组,确保同一ID的行被归为一组
  • across(everything(), ~first(na.omit(.x))):对所有列执行操作,先去除列中的NA,再取第一个值(同ID下每个变量仅存在一个非NA值,刚好提取到目标值)
  • ungroup():取消分组,还原为普通dataframe结构

如果数据中存在同一ID同一变量有多个非NA值的情况,可根据需求替换first为last、mean等聚合函数。

参考问题

相关参考问题原内容为:将多变量重复测量数据转换为宽格式时出现NA值和多余行?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:20:22