结合select()和filter()

时间:2018-10-22 17:19:55

标签: r dplyr

我有select()filter()的顺序有关系吗?我可以根据自己的需要使用select(filter())filter(select())吗?

2 个答案:

答案 0 :(得分:2)

filter引用列名。如果您的select语句删除(或重命名)了要过滤的列,则它们将是等效的。否则,我认为顺序并不重要,因为filter仅可以删除行,而select仅可以删除列。例如:

library(tidyverse)

select(filter(mtcars, hp > 200), cyl, mpg)
  cyl  mpg
1   8 14.3
2   8 10.4
3   8 10.4
4   8 14.7
5   8 13.3
6   8 15.8
7   8 15.0
filter(select(mtcars, cyl, mpg), hp > 200)
  

filter_impl(.data,quo)中的错误:评估错误:对象'hp'   找不到。

答案 1 :(得分:0)

唯一相关的是操作顺序。内在的一种会先于外在的一种。因此,如果放置select(filter()),它将首先过滤data.frame,然后选择所需的变量。如果运行filter(select()),它将首先选择变量,然后对其进行过滤。