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

如何在R语言中按cod_user分组合并数据框行?

合并tibble中用户的多行月度数据为单行

问题背景

现有一个tibble数据框,每个cod_user的月度存在/缺失标记分散在多行中(每行对应一个月份的有效数值,其余月份为NA),需要将同一用户的多行数据合并为单行,汇总所有月份的数值。

原始数据

# A tibble: 24 × 5
   cod_user   ene   feb   mar   abr
   <chr>    <dbl> <dbl> <dbl> <dbl>
 1 ES7823       1    NA    NA    NA
 2 AR3442       1    NA    NA    NA
 3 CO9382       1    NA    NA    NA
 4 ES5611       1    NA    NA    NA
 5 IT9982       1    NA    NA    NA
 6 PT6628       1    NA    NA    NA
 7 ES7823      NA     1    NA    NA
 8 AR3442      NA     1    NA    NA
 9 CO9382      NA     0    NA    NA
10 ES5611      NA     1    NA    NA
11 IT9982      NA     1    NA    NA
12 PT6628      NA     0    NA    NA
13 ES7823      NA    NA     1    NA
14 AR3442      NA    NA     1    NA
15 CO9382      NA    NA     0    NA
16 ES5611      NA    NA     1    NA
17 IT9982      NA    NA     0    NA
18 PT6628      NA    NA     0    NA
19 ES7823      NA    NA    NA     0
20 AR3442      NA    NA    NA     1
21 CO9382      NA    NA    NA     0
22 ES5611      NA    NA    NA     1
23 IT9982      NA    NA    NA     0
24 PT6628      NA    NA    NA     0

期望输出

cod_user   ene   feb   mar   abr
  <chr>    <dbl> <dbl> <dbl> <dbl>
1 ES7823       1     1     1     0
2 AR3442       1     1     1     1
3 CO9382       1     0     0     0

解决方案

使用dplyr包的分组聚合功能,按cod_user分组后提取每个月度列的有效数值。

代码实现

方式一:逐个指定列处理

library(dplyr)

# 假设原始数据框为df
merged_df <- df %>%
  group_by(cod_user) %>%
  summarize(
    ene = first(na.omit(ene)),
    feb = first(na.omit(feb)),
    mar = first(na.omit(mar)),
    abr = first(na.omit(abr)),
    .groups = "drop"
  )

方式二:批量处理月度列(更简洁)

merged_df <- df %>%
  group_by(cod_user) %>%
  summarize(across(ene:abr, ~first(na.omit(.x))), .groups = "drop")

关键说明

  • group_by(cod_user):按用户ID分组,确保同一用户的所有行被归为一组
  • across(ene:abr, ~first(na.omit(.x))):对ene到abr的所有月度列,提取组内第一个非NA值(由于数据结构中每个用户每个月份仅一个有效数值,first可替换为max(., na.rm = TRUE)或min(., na.rm = TRUE),结果一致)
  • .groups = "drop":聚合完成后取消分组状态,返回常规tibble

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:55:23