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

R语言按id折叠数据框并将多值变量存储为列表的实现方法

你之前的代码运行后没有折叠行,是因为summarise默认会将返回的多元素向量按元素数量展开行,只要给多值变量的返回结果套一层list()即可。

最简修改方案(基于你原有代码调整)

library(dplyr)
df %>%
  group_by(fruit) %>%
  summarise(
    ranking = first(ranking), # 每个id对应唯一值,用first比mean执行效率更高
    taste = first(taste),
    origin = list(unique(origin)), # 套入list避免结果展开为多行
    color = list(unique(color))
  )

运行上述代码即可得到你需要的结果,color和origin列都会是列表格式,每个fruit仅占一行,和你给出的预期输出完全一致。

多变量批量处理方案

如果需要处理的变量数量较多,你可以用across批量指定规则,避免逐个写变量名:

df %>%
  group_by(fruit) %>%
  summarise(
    # 单值变量批量取每个分组的第一个值
    across(c(ranking, taste), first),
    # 多值变量批量转换为去重后的列表列
    across(c(color, origin), ~ list(unique(.x)))
  )

如果不需要对多值变量去重,直接保留该id下的所有原始值,去掉代码中的unique()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 03:57:04