Я узнал, что функция Do
используется, когда вы хотите применить функцию к каждой группе.
например, если я хочу вывести верхние 2 строки из категорий "A", "C" и "I" переменной Index
, можно использовать следующий синтаксис.
t <- mydata %>% filter(Index %in% c("A", "C", "I")) %>% group_by(Index) %>% do(head(.,2))
Я понимаю, что после группировки по индексу функция Do
используется для вычисления head (., 2) для каждой группы.
Однако в некоторых случаях Do
не используется вообще. Например, Чтобы вычислить среднее значение переменной Y2014
, сгруппированное по переменной Index
, я подумал, что следует использовать следующий код.
t <- mydata %>% group_by(Index) %>% do(summarise(Mean_2014 = mean(Y2014)))
однако выше синтаксис возвращает ошибку
Error in mean(Y2014) : object 'Y2014' not found
Но если я удалю Do
из синтаксиса, он вернет то, что я точно хотел.
t <- mydata %>% group_by(Index) %>% summarise(Mean_2014 = mean(Y2014))
Я действительно запутался в использовании функции Do
в dplyr. Мне кажется непоследовательным. Когда следует использовать и не использовать функцию Do
? Почему я должен использовать Do
в первом случае, а не во втором случае?