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

如何将R中同id含缺失值的多行数据合并为单行整洁格式

R语言同id多行合并为单行的最简实现

方案1:tidyverse通用方案(支持所有数据类型)

你之前测试summarise仅支持数值类变量,是因为未指定适配多类型的汇总逻辑。如下代码通过按id、group分组后提取各变量的唯一非NA值实现合并,兼容数值、因子、字符等所有类型:

library(tidyverse)

dat_tidy <- dat %>%
  # group和id一一绑定,直接纳入分组键即可
  group_by(id, group) %>%
  # 对所有列取非NA的第一个值,适配全类型
  summarise(across(everything(), ~ na.omit(.x)[1]), .groups = "drop")

方案2:tidyr填充逻辑实现

也可以通过值填充后取首行的逻辑实现,适合需要灵活控制填充方向的场景:

dat_tidy <- dat %>%
  arrange(id) %>%
  group_by(id, group) %>%
  # 上下双向填充所有列的NA值
  fill(everything(), .direction = "downup") %>%
  # 取每组第一行即可得到完整观测
  slice(1) %>%
  ungroup()

方案3:无依赖的base R实现

无需加载第三方包的原生实现:

dat_tidy <- aggregate(. ~ id + group, data = dat, FUN = function(x) na.omit(x)[1])

内容的提问来源于stack exchange,提问作者Tom Küffer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:36:03