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

如何聚合pivot_wider生成的数据框中相同分组的行数据?

解决pivot_wider后同一分组多行合并为单行的问题

你当前的情况是:执行pivot_wider转换数据后,同一分组(CODE_C、CODE_P、LIB_COMPOSANT、LIB_PRODUIT完全一致)的数据被拆成多行,每个日期列仅一个位置有有效值、其余都是NA,需要将这些行合并为单行,保留所有日期的有效值。

方法1:在pivot_wider中直接指定聚合规则

初始的pivot_wider代码未设置values_fn参数,导致同一分组对应多个值时(这里是每个日期单独占一行),默认拆分为多行。只需添加values_fn = ~na.omit(.),让函数自动提取每个分组下的非NA值即可:

library(tidyr)

# 基于原始数据DONNEES_COMPOSANT执行转换
pivot_wider(DONNEES_COMPOSANT,
            names_from = date,
            values_from = PRIX,
            values_fn = ~na.omit(.))

方法2:对已生成的宽表进行聚合

如果已经得到了包含多行的宽表(示例中命名为wide_df),可以用dplyr按分组列聚合,对每个日期列提取非NA值:

library(dplyr)

# 加载可复现的宽表数据
wide_df <- structure(list(CODE_C = c("FABR**01", "FABR**01", "FABR**01", 
"FABR**01", "FABR**01", "FABR**01"), CODE_P = c("FABR**", "FABR**", 
"FABR**", "FABR**", "FABR**", "FABR**"), LIB_COMPOSANT = c("Abricot, 82", 
"Abricot, 82", "Abricot, 82", "Abricot, 82", "Abricot, 82", "Abricot, 82"
), LIB_PRODUIT = c("Abricot", "Abricot", "Abricot", "Abricot", 
"Abricot", "Abricot"), `2020-01-01` = c(1.32446153846154, NA, 
NA, NA, NA, NA), `2020-02-01` = c(NA, 1.09984615384615, NA, NA, 
NA, NA), `2020-03-01` = c(NA, NA, 3.33157894736842, NA, NA, NA
), `2020-04-01` = c(NA, NA, NA, 4.70916279069767, NA, NA), `2020-05-01` = c(NA, 
NA, NA, NA, 4.37848648648649, NA), `2020-06-01` = c(NA, NA, NA, 
NA, NA, 3.24713953488372)), row.names = c(NA, -6L), class = c("tbl_df", 
"tbl", "data.frame"))

# 聚合合并行
wide_df %>%
  group_by(CODE_C, CODE_P, LIB_COMPOSANT, LIB_PRODUIT) %>%
  summarise(across(everything(), ~na.omit(.)), .groups = "drop")

预期输出

执行任意一种方法后,会得到如下结果:

# A tibble: 1 × 10
  CODE_C   CODE_P LIB_COMPOSANT LIB_PRODUIT `2020-01-01` `2020-02-01` `2020-03-01` `2020-04-01` `2020-05-01` `2020-06-01`
  <chr>    <chr>  <chr>         <chr>              <dbl>        <dbl>        <dbl>        <dbl>        <dbl>        <dbl>
1 FABR**01 FABR** Abricot, 82   Abricot             1.32         1.10         3.33         4.71         4.38         3.25

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:24:55