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

R语言如何将data.frame拆分为含唯一type对的小data.frame列表并排除单行type

你可以用以下代码实现需求,支持任意分组变量、自动过滤行数不足2的分组并输出警告:

tidyverse 实现(代码简洁易读)

library(dplyr)
library(purrr)

# 统计各type对应行数,筛选无效分组
type_stat <- data %>% 
  count(type)
invalid_group <- type_stat$type[type_stat$n < 2]

# 输出警告
if (length(invalid_group) > 0) {
  walk(invalid_group, ~ warning(paste0("type ", .x, " has just one row thus is excluded.")))
}

# 过滤有效数据,生成所有两两type组合,拼接对应数据
valid_df <- data %>% filter(!type %in% invalid_group)
type_combs <- combn(unique(valid_df$type), 2, simplify = F)
desired_output <- map(type_combs, ~ filter(valid_df, type %in% .x))

base R 实现(无需加载第三方包)

# 统计各type对应行数,筛选无效分组
type_cnt <- table(data$type)
invalid_group <- names(type_cnt)[type_cnt < 2]

# 输出警告
if (length(invalid_group) > 0) {
  for (t in invalid_group) {
    warning(sprintf("type %s has just one row thus is excluded.", t))
  }
}

# 过滤有效数据,生成所有两两type组合,拼接对应数据
valid_df <- data[!data$type %in% invalid_group, ]
type_combs <- combn(unique(valid_df$type), 2, simplify = F)
desired_output <- lapply(type_combs, function(pair) valid_df[valid_df$type %in% pair, ])

运行上述代码得到的desired_output和你给出的示例完全匹配,后续如果需要替换为其他分组变量,只要把代码中所有的type替换为对应变量名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:09:02