Oh I see. Actually, I can offer a solution but you need different naming pattern for your values and percentage columns. I replaced the value columns as "Category_val", percentage columns as "Category_per". Here is a example:
df <- data.frame(Type=c(1,2,3,4,5),
Category_val1 = c(0,1,0,1,0),
Category_per2 = c("0.00 %", "1.00 %", "1.00 %", "1.00 %","0.00 %"),
Category_val3 = c(0,1,1,0,0),
Category_per4 = c("0.00 %", "1.00 %", "1.00 %", "1.00 %","1.00 %"))
If you can prepare the data like this you apply generic filter to all columns starts with Category_val or Category_perc with dplyr::filter_at() function. Like this:
df %>%
filter_at(vars(starts_with("Category_val")), all_vars(. == 0)) %>%
filter_at(vars(starts_with("Category_per")), all_vars(. == "0.00 %"))
Type Category_val1 Category_per2 Category_val3 Category_per4
1 0 0.00 % 0 0.00 %
If it is not possible to rename the columns, reply again. We can also solve that in a way.