簡體   English   中英

使用 dplyr 對多列進行過濾

[英]Using dplyr to filter on multiple columns

我被一些看起來很愚蠢的事情難住了。 是否有一種優雅的 dplyr 方法來僅過濾掉year == 2020quarter %in% 1:2的 2 行。

我不想過濾除 2020 年以外的任何其他年份的quarter

library(tibble)
library(dplyr)

df <- tibble(measure = rep(letters[1:4], 4),
             year = rep(2017:2020,4)) %>% 
  arrange(year) %>% 
  mutate(quarter = rep(1:4, 4))

df2 <- filter(df, measure != 2020 & quarter %in% 1:2)

reprex package (v0.3.0) 於 2021 年 2 月 1 日創建

我想要的是除了最后兩行之外的所有內容:

在此處輸入圖像描述

嘗試否定你不想要的整個表達:

dplyr::filter(df, !(year == 2020 & quarter %in% 1:2))

   measure year quarter
1        a 2017       1
2        a 2017       2
3        a 2017       3
4        a 2017       4
5        b 2018       1
6        b 2018       2
7        b 2018       3
8        b 2018       4
9        c 2019       1
10       c 2019       2
11       c 2019       3
12       c 2019       4
13       d 2020       3
14       d 2020       4

year == 2020 & quarter %in% 1:2表示保留year為 2020 且quarter12的行。 ! 否定整個表達式,因此您排除了這些行。

僅供參考,您也可以使用dplyr::between(quarter, 1, 2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM