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

使用dplyr筛选同时含a、b类别的ID并统计数量

识别同时包含指定类别的ID并统计总数

问题说明

给定包含ID和category两列的数据集,需找出同时包含类别a和b的ID,并统计这类ID的总数。示例数据中符合条件的ID为1和3,总数为2。

数据集准备

ID <- c(1,2,1,3,1,2,3,4,5,4,5)
category <- c("a", "a", "b", "a", "c", "a", "b", "b", "c", "d", "c")
df <- data.frame(ID, category)

解决方案

方法1:基础R实现

# 按ID分组,提取每个ID的唯一类别集合
id_unique_cats <- aggregate(category ~ ID, df, FUN = unique)

# 筛选同时包含a和b的ID
target_ids <- id_unique_cats$ID[sapply(id_unique_cats$category, function(x) all(c("a", "b") %in% x))]

# 统计符合条件的ID数量
length(target_ids)
# 输出:2

方法2:使用dplyr包(更简洁)

library(dplyr)

result_count <- df %>%
  distinct(ID, category) %>%  # 去除每个ID下重复的类别
  group_by(ID) %>%
  filter(all(c("a", "b") %in% category)) %>%  # 筛选同时包含a和b的ID组
  pull(ID) %>%
  unique() %>%
  length()

print(result_count)
# 输出:2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:40:45