У меня есть фрейм данных с 3 переменными: report_epiweek, report_epiyear и Freq_case.
library(dplyr)
library(ggplot2)
mydata<-data.frame(report_epiweek=c(1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10),
report_epiyear=c(2018,2018,2018,2018,2018,2018,2018,2018,2018,2018,2019,2019,2019,2019,2019,2019,2019,2019,2019,2019),
Freq_case=c(0,0,0,0,0,0,2,6,2,3,4,5,7,8,34,2,0,6,3,1))
Я хотел бы создать гистограмму, используя ggplot2. Я хочу отфильтровать недели с 0 значениями с 2018 года (недели с 1 по 6). Насколько я понимаю, функция фильтра заключалась в том, что вы можете фильтровать строки на основе нескольких условий (от https://suzan.rbind.io/2018/02/dplyr-tutorial-3/):
Фильтрация на основе нескольких условий
Приведенные выше примеры возвращают строки на основе одного условия, но опция фильтра также допускает фильтры в стиле AND и OR:
фильтр (условие 1, условие 2) будет возвращать строки, в которых выполняются оба условия.
фильтр (условие1,! Условие2) вернет все строки, где условие одно является истинным, а условие 2 - нет.
фильтр (условие 1 | условие 2) будет возвращать строки, в которых выполняется условие 1 и / или условие 2.
фильтр (xor (условие1, условие2) вернет все строки, в которых выполняется только одно из условий, а не при выполнении обоих условий.
mydata %>%
mutate(report_epiweek=as.numeric(report_epiweek)) %>%
filter(!Freq_case==0 & report_epiyear==2018) %>%
ggplot(aes(x=report_epiweek, y=Freq_case))+
geom_col()+
ggtitle("EpiCurve") +
facet_grid(. ~ report_epiyear)+
theme_bw()+
theme(axis.text.x = element_text(angle = 90), legend.position = "bottom", legend.title = element_text(color = "black", size = 8))
Это дает следующий график.
![epicurve](https://i.stack.imgur.com/gJf9c.png)
Похоже, что фильтр отфильтровывает все записи, у которых report_epiyear равен 2018, но я хочу иметь график, где отфильтрованные записи имеют те, которые имеют Freq_case 0 и находятся в 2018. Это оставило бы мой Freq_case 0 в 2019 году нетронутым. (и я смогу увидеть другие значения 2018 года).
Я не уверен, что просто не понимаю, как использовать фильтр. Любая помощь будет высоко ценится.