Я хочу создавать новый столбец каждый раз, когда вызывается функция сгруппированного среднего для всех типов данных фактора.
Я могу воспроизвести только результат решения, но только для однофакторной переменной A.
df <- data.frame(
target = c(1, 4, 8, 9, 2, 1, 3, 5, 7, 1),
A = c("A", "Z", "N", "A", "Z"),
B = c("B", "Q", "G", "B", "T"),
C = c("C", "Y", "C", "P", "Y")
)
grouped_mean <- function(data, summary_var, ...) {
summary_var <- enquo(summary_var)
data %>%
# Selects only factor data types and a target column
select(which(map_chr(., class) == "factor"), !!summary_var) %>%
group_by(...) %>%
# Over here I am not able to change column name, so that it yields Mean_A, Mean_B and Mean_C
mutate(mean = mean(!!summary_var)) %>%
ungroup()
}
grouped_mean(data = df,
group_var = A,
summary_var = target)
Я попробовал зациклить:
map_df(df, grouped_mean(data = df, summary_var = target))
Но я получаю такую ошибку:
Ошибка: не удается преобразовать объект
tbl_df/tbl/data.frame
в функцию
Вопросы и ответы:
- Я не уверен, как создать функцию, которая динамически изменяет имя в функции изменения, с имени mean на mean_A, mean_B и mean_c
- Я пробовал функцию map_df, чтобы зациклить каждый элемент df, но безуспешно. Идея состоит в том, чтобы создать новые столбцы, которые являются средствами целевой функции.