Я хочу написать простую функцию f (группирование), которая суммирует данные ниже: d0

3
Arthur Carvalho Brito 14 Янв 2021 в 23:45

1 ответ

Лучший ответ

Мы создаем условие с if/else для объединения 'V3' или 'V4' на основе значения ввода grouping. Внутри функции преобразуйте значение группировки без кавычек в символ (ensym), а затем в строку (as_string), затем используйте if/else для объединения групп, передайте обновленные группы (' grp ') внутри across и summarise' X '

f1 <- function(data, grouping) {
        grp <- rlang::as_string(ensym(grouping))
        grp <- c(grp, if(grp == 'V1') 'V3' else 'V4')

        data %>%
            group_by(across(all_of(grp))) %>%
            summarise(X = sum(X), .groups = 'drop')

}

f1(d0, V1)
f1(d0, V2)
3
akrun 14 Янв 2021 в 20:56