首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R多条件过滤/删除

R多条件过滤/删除
EN

Stack Overflow用户
提问于 2020-12-30 11:00:45
回答 2查看 81关注 0票数 0

我以前是SAS用户,正在尝试使用tidyverse中的"filter“函数删除基于多个条件的案例,并且遇到了多个条件的交集问题。在我的reprex中,我正在尝试删除同时具有8个气缸和qsec 18及以上的汽车(mtcar数据集)。在mtcars数据集中,只有2辆汽车同时满足这两个条件(Merc 450SLC和Caddilac Fleetwood)。mtcars数据集中有32个观测值,因此解决方案应根据标准返回30个观测值。

我尝试过使用filter(cyl != 8,qsec < 18),但这会删除所有8个气缸汽车和所有qsecs 18及以上的汽车(导致只有5个观察值)。使用"&“会产生相同的结果。大量的谷歌搜索都没有得到解决方案,所以任何帮助都是非常感谢的。

代码语言:javascript
运行
复制
#Reprex: 
filterdata <- mtcars %>%
   filter(qsec < 18 & cyl != 8)

谢谢,怀特

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-30 11:08:55

这是您要删除的内容:

代码语言:javascript
运行
复制
library(dplyr)
mtcars %>%  filter(cyl == 8 & qsec >= 18)

因此,您可以取消该条件,以获得要保留的行。

代码语言:javascript
运行
复制
mtcars %>%  filter(!(cyl == 8 & qsec >= 18))

您尝试的方法需要OR (|)条件。

代码语言:javascript
运行
复制
mtcars %>%  filter(cyl != 8 | qsec < 18)

PS -只有一行包含qsec >= 18Caddilac Fleetwoodqsec为17.98。

票数 0
EN

Stack Overflow用户

发布于 2020-12-31 02:10:18

base R中,我们可以使用subset

代码语言:javascript
运行
复制
subset(mtcars, !(cyl == 8 & qsec >= 18))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65501490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档