在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