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

如何基于某列的值将一个DataFrame同时拆分为多个子DataFrame

拆分R数据框为按类别分组的子数据框

先确认原数据框的创建代码:

crop.genos <- data.frame(crop=rep(1:6, each=4),genos=rep(1:4, 6))
crop.genos$crop.genotype <- paste(crop.genos$crop, crop.genos$genos, sep="")

下面提供两种实用的拆分方案:

方法1:基础R原生split()函数

这是最简便的原生解决方案,直接按crop列分组拆分,返回包含所有子数据框的列表:

# 拆分数据框为列表,每个元素对应一个crop类别的子数据框
crop_subsets <- split(crop.genos, crop.genos$crop)

# (可选)将列表中的子数据框转为全局环境中的独立对象(如crop_1、crop_2...)
list2env(crop_subsets, envir = .GlobalEnv)

执行后可直接调用crop_1、crop_2等变量查看对应子数据框,比如crop_1的输出为:

crop genos crop.genotype
1    1     1            11
2    1     2            12
3    1     3            13
4    1     4            14

方法2:tidyverse生态的group_split()

若习惯使用dplyr等tidyverse工具,可通过group_split()实现分组拆分:

library(dplyr)

# 按crop分组并拆分,返回子数据框列表
crop_subsets <- crop.genos %>% 
  group_by(crop) %>% 
  group_split()

# (可选)给列表元素命名并转为全局独立对象
names(crop_subsets) <- paste0("crop_", 1:6)
list2env(crop_subsets, envir = .GlobalEnv)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:15:35