r - 具有相同过滤器代码的不同结果
问题描述
我在 hflights 上运行一些 dplyr函数。
我想知道有多少周末航班飞行距离超过 1000 英里但总滑行时间低于 15 分钟?
我认为下面的两组代码应该产生相同的结果 - 有人可以告诉我为什么它们不同吗?
filter(hflights,DayOfWeek==6|DayOfWeek==7 & Distance >1000 & TaxiIn+TaxiOut <15)
A tibble: 2,841 x 21
filter(hflights,DayOfWeek %in% c(6,7) & Distance >1000 & TaxiIn+TaxiOut <15)
A tibble: 155 x 21
解决方案
在不使用括号的情况下,示例中的 or 运算符|
本质上是将|
运算符左侧的所有内容与其右侧的所有内容进行比较。因此,第一个表达式DayOfWeek==6|DayOfWeek==7 & Distance >1000 & TaxiIn+TaxiOut <15
会生成以下所有内容的输出:
DayOfWeek==6
- 或者
DayOfWeek==7 & Distance >1000 & TaxiIn+TaxiOut <15
使用%in%
运算符时,您实际上是在使用带括号的|
运算符:
DayOfWeek %in% c(6,7)
是相同的(DayOfWeek==6 | DayOfWeek==7)
因此,第二个表达式DayOfWeek %in% c(6,7) & Distance >1000 & TaxiIn+TaxiOut <15
会生成以下所有内容的输出:
DayOfWeek==6 & Distance >1000 & TaxiIn+TaxiOut <15
- 或者
DayOfWeek==7 & Distance >1000 & TaxiIn+TaxiOut <15
可以用括号修改第一个表达式,filter(hflights,(DayOfWeek==6 | DayOfWeek==7) & Distance >1000 & TaxiIn+TaxiOut <15)
以产生与使用第二个表达式相同的结果。
推荐阅读
- docker - Google Cloud 上的 Docker 容器卷绑定
- docker - 如何在 docker 中配置 ksqldb BASIC 身份验证
- python - 过滤网络中的节点,重新着色未选择的节点
- terraform - 是否存在通过不同环境(从开发到生产)推广 Terraform .tfplan 文件的可接受的工作流程方案?
- linux - 为什么汇编中的可执行文件有很大的尺寸?
- lua - LUA 脚本在编译时产生错误
- opencv - openframeworks中的opencv BackgroundSubtractorMOG
- python - 如何根据条件将以前的值替换为当前值?
- react-native - 反应屏幕之间的本机导航
- flutter - 嵌套列表视图不水平滚动