如何仅筛选 2018 年和 2019 年都存在每个因素"A"的行



在R中,我正在寻找一种方法,只选择2018年和2019年出现的动物行给定这样的数据帧:

Animal     Year    Week    Value
A     2018    15      14
B     2017    15      6
B     2019    16      9
A     2018    17      17
B     2019    15      25
A     2019    16      27
B     2017    15      20
C     2019    17      6
B     2018    18      3
A     2019    15      5

让我们假设动物"C";仅在2019年期间记录。我想删除所有带有C的行。
预期输出是相同的数据集,但带有";C";线路已拆除。

此外,我正在寻找一种方法,只选择那些每周观察(排(超过2次的动物。预期输出为:

Animal     Year    Week    Value
B     2017    15      6
B     2019    15      25
B     2017    15      20

因为只有动物";B";每周有2次以上的观察。

问题1

library(dplyr)
df %>%
group_by(Animal) %>%
filter(all(c(2018, 2019) %in% Year))
#   Animal  Year  Week Value
#   <chr>  <int> <int> <int>
# 1 A       2018    15    14
# 2 B       2017    15     6
# 3 B       2019    16     9
# 4 A       2018    17    17
# 5 B       2019    15    25
# 6 A       2019    16    27
# 7 B       2017    15    20
# 8 B       2018    18     3
# 9 A       2019    15     5

问题2

df %>%
group_by(Animal, Week) %>%
filter(n() > 2)
#   Animal  Year  Week Value
#   <chr>  <int> <int> <int>
# 1 B       2017    15     6
# 2 B       2019    15    25
# 3 B       2017    15    20

最新更新