Это решение может быть не самым красивым, но оно делает то, что вам нужно
if (var1 == "yes")
result <- starwars %>% group_by(gender)
if (var1 == "no")
result <- starwars %>% group_by(gender, skin_color)
, и после каждого group_by
вы указываете функции суммирования, которые вы хотите применить, или любую другую нужную вам операцию.
РЕДАКТИРОВАТЬ
Другое возможное решение после прочтения этого сообщения использует условные конвейеры , то есть
starwars %>%
{if (var1 == "yes") group_by(., gender) else .} %>%
{if (var1 == "no") group_by(., gender, skin_color) else .}
Поскольку у меня нет ваших данных, я не проверял их, но они должны работать