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

R语言:如何将dataframe的ID与RE两列转换为按ID分组的命名list

两列数据框转分组命名列表的实现方法

方法1:base R原生实现(无需第三方依赖)

直接使用内置split()函数完成分组拆分,完整可运行代码:

# 构造示例数据框(R版本低于4.0时需补充stringsAsFactors = FALSE参数,避免字符被自动转为因子类型)
df <- data.frame(
  ID = c("am_A", "am_A", "am_B", "am_C", "am_B", "am_C"),
  RE = c("re456", "re4", "re20", "re47", "re456", "re12")
)

# 按ID列分组,拆分RE向量为命名列表
result <- split(df$RE, df$ID)

输出结构完全匹配目标格式:列表元素以对应ID为名称,元素内容为匹配ID下的所有RE值组成的字符向量。
如果需要去除每个分组内的重复RE值,可追加一行去重处理:

# 每个分组内RE值去重
result <- lapply(result, unique)

方法2:tidyverse语法实现(适配日常分析流程)

使用dplyr、tibble工具链的写法可读性更高,适合和其他分析步骤串联:

# 加载依赖包
library(dplyr)
library(tibble)

# 按ID聚合RE值,转换为目标格式的命名列表
result <- df %>%
  group_by(ID) %>%
  summarise(RE_vec = list(RE)) %>%
  deframe()

需要去重时仅需在list()内嵌套unique()即可:

# 带分组内去重的版本
result <- df %>%
  group_by(ID) %>%
  summarise(RE_vec = list(unique(RE))) %>%
  deframe()

两种方法的选择参考:

  • base R 方法无额外依赖,脚本可移植性最强,适合在无法安装第三方包的运行环境使用
  • tidyverse 方法语法和多数日常数据分析流程统一,后续扩展处理逻辑更顺畅

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 19:06:04