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

R语言如何基于dataframe已有多列值生成新列并按location分组聚合

R语言DataFrame分组聚合转宽表实现方案

实现思路

不需要手动做独热编码,直接通过「字段拼接→分组聚合→宽表转换」三步即可完成需求,推荐使用tidyverse套件实现,代码逻辑清晰易读。

依赖包加载

首先加载所需套件:
library(tidyverse)

示例数据构造

可直接运行以下代码生成你描述的测试数据表:

df <- tibble(
  location = c("a", "a", "b", "b"),
  type = c("x", "x", "x", "y"),
  amount = c(10, 20, 50, 100),
  product = c("p1", "p2", "p5", "p10")
)

核心处理代码

result <- df %>%
  # 拼接product与amount字段
  mutate(p_amount = str_c(product, amount, sep = "_")) %>%
  # 按location、type分组,合并同组的拼接结果
  group_by(location, type) %>%
  summarise(merge_val = str_c(p_amount, collapse = ","), .groups = "drop") %>%
  # 转为宽表,type取值转为新列
  pivot_wider(
    id_cols = location,
    names_from = type,
    values_from = merge_val,
    values_fill = ""
  ) %>%
  # 按需求修改列名
  rename(A_P_X = x, A_P_Y = y)

运行后输出result即可得到目标格式的数据表。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:06:03