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

如何按Sample列中句号前的内容分组并拆分R语言数据框

按Sample列前缀分组并拆分数据框的R实现

方法1:基础R + stringr实现

先提取Sample列中.之前的分组标识,再拆分数据框并导出为独立对象:

# 安装并加载stringr(首次使用需安装)
# install.packages("stringr")
library(stringr)

# 新增分组列,提取Sample中.之前的内容
df$Group <- str_extract(df$Sample, "^[^.]+")

# 按分组拆分数据框为列表
df_groups <- split(df, df$Group)

# 将列表中的每个数据框导出到全局环境,命名格式为df_分组名
for (group_name in names(df_groups)) {
  assign(paste0("df_", group_name), df_groups[[group_name]], envir = .GlobalEnv)
}

执行后,你会得到df_A、df_AB这类独立数据框,分组数量再多也能自动处理。

方法2:dplyr + stringr实现

如果习惯tidyverse语法,可以用以下方式:

# 安装并加载所需包(首次使用需安装)
# install.packages(c("dplyr", "stringr"))
library(dplyr)
library(stringr)

# 生成分组列表
df_groups <- df %>%
  mutate(Group = str_extract(Sample, "^[^.]+")) %>%
  group_split(Group, .keep = FALSE) # .keep=FALSE表示不保留Group列,按需调整

# 给列表命名并导出到全局环境
names(df_groups) <- unique(str_extract(df$Sample, "^[^.]+"))
list2env(df_groups, envir = .GlobalEnv)

验证结果

调用对应分组的数据框即可查看:

df_A
#>   Wavelength Sample  Mean
#> 1        400    A.1 0.434
#> 2        400    A.2 0.347
#> 3        400    A.3 0.434

df_AB
#>   Wavelength Sample  Mean
#> 4        400   AB.1 0.674
#> 5        400   AB.2 0.591
#> 6        400   AB.3 0.857

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:33:26