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

R语言filter函数使用问题:筛选餐品数45-50的快餐店结果有误

问题分析与解决方案

代码核心错误

  • 管道符语法使用错误:调用%>%管道符后,前序的fastfood数据集会自动传入下一个函数的第一个参数,你在filter()里重复填入fastfood作为第一个参数,会导致逻辑匹配混乱。
  • 筛选逻辑完全不符合需求:item列存储的是单品名称,属于文本类型,无法和45、50这类数值做大小比较。你需要的是按餐厅分组统计单品总数量,再筛选单品数落在45-50区间的餐厅。

修正代码

根据你需要的输出结果,分为两种常用写法:

写法1:仅获取符合条件的餐厅名称及对应品类数量

# 提前加载依赖包
library(dplyr)
library(openintro)

fastfood <- openintro::fastfood

U1 <- fastfood %>%
  group_by(restaurant) %>%
  summarise(item_count = n()) %>%
  filter(item_count >= 45 & item_count <= 50)

写法2:获取符合条件的餐厅对应的所有单品明细数据

library(dplyr)
library(openintro)

fastfood <- openintro::fastfood

U1 <- fastfood %>%
  group_by(restaurant) %>%
  filter(n() >= 45 & n() <= 50) %>%
  ungroup()

验证方式

运行写法1后直接打印U1,可看到每个符合条件的餐厅对应的单品数都在45到50的区间内,完全匹配你的筛选需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:15:04