I sh для создания нового столбца при каждом вызове сгруппированной средней функции для всех типов факторных данных.
Я могу скопировать только решающий результат, но только на одну факторную переменную 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
к функции
Вопросы и вводные данные:
- Я не уверен, как сделать функцию, которая динамически меняет имя в функции преобразования, из имени означает * От 1022 * до mean_A , mean_B и mean_ c
- Я попытался использовать функцию map_df для l oop каждого элемента df , но безуспешно. Идея заключается в создании новых столбцов, которые являются средством целевой функции.