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

如何在R语言中合并DataFrame分组内的分类行值为单个值

我来帮你搞定这个问题!你想要把同一name对应的多个labels合并到同一行,其实不用绕到group_map——tidyverse里有更直接的方案,用group_by()搭配summarize()就能轻松实现。

首先先确认你的初始数据没问题:

library(tidyverse)
test_df <- data.frame(
  name = c('A', 'A', 'B', 'C', 'C'),
  labels = c('historical', 'comedy', 'tragedy', 'comedy', 'young adult')
)

接下来是核心的合并代码:

test_combined <- test_df %>%
  group_by(name) %>%
  summarize(
    # 给每个标签加上双引号,再用逗号+空格合并
    labels = str_c('"', labels, '"', collapse = ', '),
    # 可选:取消分组状态,让结果回到普通tibble
    .groups = 'drop'
  )

运行后你就能得到想要的结果:

# A tibble: 3 × 2
  name  labels                     
  <chr> <chr>                     
1 A     "historical", "comedy"    
2 B     "tragedy"                 
3 C     "comedy", "young adult"

为什么你之前的group_map方法没生效?

group_map的作用是对每个分组单独应用函数,然后把所有分组的结果拼接起来。你之前的函数只是返回了原分组的labels列,相当于没做合并操作,所以最后还是会保留原有的多行结构。如果一定要用group_map实现,也可以,但需要让每个分组返回单行数据,比如:

test_df %>%
  group_by(name) %>%
  group_map(~ tibble(
    name = .x$name[1],
    labels = str_c('"', .x$labels, '"', collapse = ', ')
  )) %>%
  bind_rows()

不过显然第一种用summarize的方法更简洁直观,推荐优先使用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 12:27:47