Мой фрейм данных имеет следующую структуру. Есть столбец A, который имеет связанные столбцы A_1, A_2, A_3, A_4 и аналогично для B.
# create dummy data frame
dummy_df=data.frame('ID'=c(1,2,3,4),'A'=c('false','false','true','false'),'A_1'=c('false','false','true','false'),'A_2'=c('true','false','false','false'),
'A_3'=c('false','false','true','false'),'A_4'=c('false','false','false','false'),'B'=c('false','true','false','false'),'B_1'=c('false','false','false','false'),'B_2'=c('false','true','false','false'),
'B_3'=c('false','false','true','false'),'B_4'=c('false','false','false','false') )
Проверки, которые я намереваюсь do:
1) Есть ли строки, в которых, если A = false, любая из подглав (A_1, A_2, A_3, A_4) была истинной, например, ID 1 (A = false, A_2 = правда) ниже. Для этого я пришел к следующему коду после исследования в режиме онлайн
dummy_df %>% select(matches('ID|A|A_')) %>% filter(A=='false') %>% filter_all(any_vars(. == 'true'))
Такая же проверка должна быть выполнена для всего фрейма данных с A и подколонками, B и его подстолбцами et c. Я не могу обобщить вышеприведенное в функцию, где я могу просто ввести базовый столбец, который я хочу проверить (т. Е. A или B), и применить его к списку базовых столбцов (A или B), возвращая df_A_mistmatch, df_B_mismatch (например, идентификатор строки 3) в качестве выходных данных функции lapply с их идентификаторами в кадре.
2) Другим выходом, который помогает проверить вышеизложенное, является кросс-таблица со всеми подколонками, т. Е. Для подсчета, где A = false и A_1 или A_2 или A_3 или A_4 = true имеют счетчики> 1
После просмотра множества ссылок я вижу, что filter_at не допускает ничего, кроме Any_vars
или all_vars
, и не допускает множественных условий, таких как в этом случае - A = false и A_1 или A_2 или A_3 или A_4 = правда. поэтому я использовал два фильтра ниже.
Каковы оптимальные решения для указанной выше проблемы