Удалить группу строк, если значение присутствует хотя бы в одной из строк
Я пытаюсь использовать dplyr для фильтрации данных. Я хотел бы удалить целую группу строк, если некоторые строки содержат значение, тогда следует удалить целую группу.
Пример данных показан ниже: Например, переменная "name" содержит группу CE 10: 0. "Тип образца" этой группы - либо "шаг", либо "Пустой". Если в "SampleType" в группе CE 10: 0 присутствует значение "Blank", то следует удалить всю группу CE 10: 0-.
Таким образом, в этом примере останутся только группы CE 10: 3 и CE 11: 1.
Я не могу разобраться в этой функции фильтрации, любая помощь будет принята с благодарностью.
fullname name intensity SampleType
step6-a-s CE 10:0 11997.1 step
step7-c-s CE 10:0 8752 step
step4-c-s CE 10:0 6969.9 step
Blank2-s CE 10:0 2231.1 Blank
step6-b-s CE 10:0 3275.6 step
step7-b-s CE 10:0 4485.4 step
step3-c-s CE 10:0 4191.6 step
Blank1-s CE 10:0 4349 Blank
step8-a-s CE 10:0 8838 step
step7-b-s CE 10:1 6155.3 step
step4-c-s CE 10:1 5899.9 step
Blank2-s CE 10:1 3098.6 Blank
step6-b-s CE 10:1 2945.2 step
step5-c-s CE 10:1 1207.2 step
Blank1-s CE 10:1 4173 Blank
step2-b-s CE 10:1 3219.4 step
step4-a-s CE 10:3 3658.2 step
step1-b-s CE 10:3 4070 step
step5-a-s CE 10:3 2776.4 step
step3-a-s CE 10:3 4821.6 step
step4-b-s CE 10:3 4145.9 step
step5-c-s CE 11:0 7056 step
step3-c-s CE 11:0 6367.5 step
step2-b-s CE 11:0 6426.9 step
step7-c-s CE 11:0 5133.9 step
Blank2-s CE 11:0 4006.3 Blank
step1-c-s CE 11:0 3791.7 step
step4-b-s CE 11:1 5183.7 step
step4-a-s CE 11:1 3549.5 step
step3-b-s CE 11:1 2822.9 step
step1-b-s CE 11:1 2495.7 step
1 ответ
Хорошо, я нашел гораздо более простое решение этой проблемы: сначала сделайте вектор, содержащий имена из строк, с "Пустым", а затем на втором этапе используйте этот вектор для удаления групп с соответствующими именами. Возможно, не самый элегантный метод, но он работает
blanks_in_n_and_s_split <- n_and_s_split %>%
filter(SampleType == "Blank")
species_in_blank <- unique(blanks_in_n_and_s_split$name)
n_and_s_split_blankfiltered <- n_and_s_split %>%
filter(!name %in% species_in_blank)