Понимание поведения group_by в R - PullRequest
0 голосов
/ 28 апреля 2020

Я пытался понять, что именно возвращает group_by. Я считаю, что это должен быть вектор для каждой существующей уникальной комбинации group_by. Рассмотрим следующее:

data<-data.frame(Names = c("odyssey", "camry", "odyssey", "camry"), year = c(1990, 1990, 1992, 1994), sales = c(200, 400, 1000, 4000))

Если мы попросим процент продаж, как указано ниже, мы увидим в 1990 году, что продажи (слева) равны 200 в первой строке, а продажи (в сумме), должно быть c (200, 400)! Продажи во втором ряду были определены как 400, а затем c (200, 400).

data %>% group_by(year) %>% mutate(percent_sales = 100*sales/sum(sales)) %>% select(percent_sales)

Пытаясь взломать его, я вижу, что продажи определяются как это в 1990 году: цифра c , double, длина 2 1992: цифра c, double, длина 1 1994: цифра c, double, длина 1

Так что это должен быть вектор ... но почему он возвращает только одно значение для продаж при запросе 100 * продаж, но вернуть полный вектор для суммы (продаж)?

Спасибо!

1 Ответ

0 голосов
/ 28 апреля 2020

group_by используется для получения информации о группе, как вы делаете при группировке строк по годам. После группировки всех вычислений, которые вы делаете с суммированием, делаются только внутри этой группы. Как бы то ни было, каждая строка все еще там.

Таким образом, суммарное значение записывается во все строки, например, вы получаете указанный вами веректор. Во-вторых, сделать некоторые вычисления в одном ряду с этим результатом. Используется значение этой строки.

Еще один совет: после завершения всех вычислений, основанных на этих группах, я рекомендую разгруппировать, поэтому в группах не выполняется никаких вычислений, кроме всех строк.

...