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

如何在R中筛选出拥有多种水果的姓名列表?

获取拥有两种及以上水果的姓名列表

给定的数据集定义代码如下:

library(tidyverse)

name <- c("John","John","John","Peter","Paul","Paul", "Steven", "Steven")
fruit <- c("Apple","Apple","Banana","Banana","Cherry","Cherry","Apple","Banana")
grunnur <- data.frame(name,fruit) 
grunnur$name <- factor(grunnur$name) 
grunnur$fruit <- factor(grunnur$fruit) 

方法1:使用dplyr(tidyverse工具链)

通过分组统计唯一水果数量,筛选符合条件的姓名:

grunnur %>%
  group_by(name) %>%
  summarise(unique_fruit_count = n_distinct(fruit)) %>%
  filter(unique_fruit_count >= 2) %>%
  pull(name)

步骤解析:

  • group_by(name):按姓名对数据分组
  • summarise(unique_fruit_count = n_distinct(fruit)):计算每组内的唯一水果种类数
  • filter(unique_fruit_count >= 2):保留种类数≥2的分组
  • pull(name):提取最终的姓名列表

方法2:基础R实现

无需依赖tidyverse,用基础R函数也能完成:

# 统计每个姓名对应的唯一水果数量
fruit_counts <- tapply(grunnur$fruit, grunnur$name, function(x) length(unique(x)))
# 筛选出数量≥2的姓名
names(fruit_counts[fruit_counts >= 2])

步骤解析:

  • tapply按姓名分组,对每组的水果列计算唯一值的数量
  • 从统计结果中提取满足条件的姓名名称

两种方法最终都会返回包含John和Steven的姓名列表。

内容的提问来源于stack exchange,提问作者Gunnar Björn Björnsson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:32:22