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

如何在R中按因子水平拆分dataframe并生成对应命名的新dataframe

按因子水平拆分DataFrame并生成同名对象

你可以用以下两种常用方法实现需求:

方法一:基础R实现

先构造示例数据(方便复现):

df <- data.frame(
  Species = factor(c("CANG", "CANG", "AMRO", "AMRO", "MOBL", "MOBL", "MOBL"))
)

使用split()拆分数据框为列表,再用list2env()将列表元素转为全局环境的对象:

# 按Species因子水平拆分
split_result <- split(df, df$Species)
# 将列表中的每个数据框导出到全局环境,名称对应因子水平
list2env(split_result, envir = .GlobalEnv)

运行后,全局环境中会生成CANG、AMRO、MOBL三个数据框,分别对应各自的因子行。

方法二:tidyverse工具链实现

如果习惯使用tidyverse系列包,可以结合group_split()和purrr的函数完成:

library(tidyverse)

# 按Species分组拆分,同时保留原列
grouped_dfs <- df %>% group_split(Species, .keep = TRUE)
# 获取所有因子水平名称
level_names <- levels(df$Species)
# 循环将每个分组赋值为同名全局对象
walk2(grouped_dfs, level_names, ~ assign(.y, .x, envir = .GlobalEnv))

验证结果

运行任意方法后,直接调用对象即可查看结果:

# 查看CANG数据框
CANG
# 查看AMRO数据框
AMRO
# 查看MOBL数据框
MOBL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:15:44