dplyr 过滤器语句不在 data.frame 的表达式中

Posted

技术标签:

【中文标题】dplyr 过滤器语句不在 data.frame 的表达式中【英文标题】:dplyr filter statement not in expression from a data.frame 【发布时间】:2018-06-07 12:06:26 【问题描述】:

我想在 dplyr 中使用带有 data.frame 的 not in 语句,但它不起作用。我想从 data.frame 中排除值,因为我确实有大量的周数。下面是一个例子

df1 = data.frame(week=c(1,2,3,4,5,6),sales=c(10,24,23,54,65,45))
week_e=data.frame(week=c(2,5)) 

所以我想从 df1 中排除 week_e 数据框中的周数,以下是代码 它不工作。请帮忙!谢谢。

       df1  %>%
       filter(!week %in% week_e)  

       week sales
   1    1    10
   2    2    24
   3    3    23
   4    4    54
   5    5    65
   6    6    45

【问题讨论】:

【参考方案1】:

其实我得到了答案。添加一个 unlist 到 week_e data.frame 然后它就解决了

 df1 = data.frame(week=c(1,2,3,4,5,6),sales=c(10,24,23,54,65,45))
 week_e=unlist(data.frame(week=c(2,5)))

 df1  %>%
 filter(!week %in% week_e) 

 week sales
  1    10
  3    23
  4    54
  6    45

【讨论】:

以上是关于dplyr 过滤器语句不在 data.frame 的表达式中的主要内容,如果未能解决你的问题,请参考以下文章

dplyr - 按组大小过滤

使用 OR 使用 dplyr 过滤数据框的更好方法?

结合 grepl 过滤 dplyr 中的观察结果

具有动态变量名称的 r dplyr 过滤器

使用 dplyr 过滤日期而不更改变量格式

Python 相当于 R 的 grepl 和 dplyr 过滤器 [重复]