При использовании dplyr "group_by" и "mutate", если я правильно понимаю, кадр данных разбивается на разные суб-данные в соответствии с аргументом group_by. Например, со следующим кодом:
set.seed(7)
df <- data.frame(x=runif(10),let=rep(letters[1:5],each=2))
df %>% group_by(let) %>% mutate(mean.by.letter = mean(x))
mean() применяется последовательно к столбцу x из 5 под-dfs, соответствующему букве между a и e.
Итак, вы можете манипулировать столбцами sub-dfs, но можете ли вы получить доступ к самим sub-dfs? К моему удивлению, если я попробую:
set.seed(7)
data <- data.frame(x=runif(10),let=rep(letters[1:5],each=2))
data %>% group_by(let) %>% mutate(mean.by.letter = mean(.$x))
результат отличается. Из этого результата можно сделать вывод, что "." df не представляет последовательно суб-dfs, а только "данные" (функция group_by ничего не меняет).
Причина в том, что я хочу использовать функцию stat, которая принимает фрейм данных как аргументы для каждого из этих под-dfs.
Спасибо!