Вот что я хочу сделать: у меня есть датафрейм df, определенный как:
col1 <- c("a","a","a","a","a","a","b","b","b","b","b","b")
col2 <- c("z","z","x","x","z","x", "z","z","x","x","z","x")
col3 <- c(1,2,3,4,5,6,7,8,9,10,11,12)
df <- data.frame(col1,col2,col3)
и функция pred, которая вычисляет среднее значение, определенное как:
pred <- function(subset_df){return(mean(subset_df$col3))}
Я хочукадр данных через функцию by в следующем формате:
col1 col2 col3_mean
a x 4.33
a z 2.66
b x 10.33
b z 8.66
В настоящее время я использую функцию by () для разделения этих данных на слои и применяю функцию pred (), которая вычисляет среднее значение
by_keys <- c("col1","col2")
data_sub <- by(df, data_sub[,by_keys], pred)
data_sub <- do.call(rbind, data_sub)
Я получаю сообщение об ошибке: «Ошибка в do.call (rbind, data_sub): второй аргумент должен быть списком»
Я попытался найти решение из аналогичного шага, но яне получайте col1 и col2 в нужном формате
as.data.frame(vapply(data_sub,unlist,unlist(data_sub[[1]])))
Буду признателен за любую помощь в этом.