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

如何将R语言DataFrame按年份过滤拆分,生成命名矩阵列表?

按年份拆分DataFrame为命名矩阵列表的实现方法

给定包含年份列和数值列x的DataFrame,需要按年份分组,将每组的x列转换为单列矩阵,最终生成以yr年份为命名规则的列表,以下是两种高效实现方式:

方法一:使用tidyverse工具链(dplyr + purrr)

通过分组拆分、命名设置、批量转换三步完成,代码简洁且可读性强:

library(tidyverse)

# 生成可复现的示例数据
set.seed(123)
df <- data.frame(year = sample(rep(2010:2020, times=3)), x = runif(33))

# 执行拆分与转换操作
df_list <- df %>%
  group_split(year, .keep = FALSE) %>% # 按year分组拆分,自动丢弃year列
  set_names(paste0("yr", unique(sort(df$year)))) %>% # 为列表元素设置yrXXXX格式的名称
  map(as.matrix) # 将每个分组的数据框转为单列矩阵

方法二:使用Base R

无需额外加载包,利用原生函数完成需求,适合轻量场景:

set.seed(123)
df <- data.frame(year = sample(rep(2010:2020, times=3)), x = runif(33))

# 拆分x向量并转换为矩阵
df_list <- lapply(split(df$x, df$year), function(x) matrix(x, ncol = 1))
# 重命名列表元素为yrXXXX格式
names(df_list) <- paste0("yr", names(df_list))

结果验证

执行str(df_list)可查看最终结构,每个列表元素均为对应年份的单列矩阵,命名完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:33:19