У меня есть data.frame, который содержит имена клиентов, годы и несколько номеров доходов с каждого года.
df <- data.frame(client = rep(c("Client A","Client B", "Client C"),3),
year = rep(c(2014,2013,2012), each=3),
rev = rep(c(10,20,30),3)
)
Я хочу получить файл data.frame, который агрегирует доход от клиента и года. Затем я хочу сортировать data.frame по годам, уменьшая доход.
library(dplyr)
df1 <- df %>%
group_by(client, year) %>%
summarise(tot = sum(rev)) %>%
arrange(year, desc(tot))
Однако при использовании кода выше функция arrange()
не изменяет порядок сгруппированных данных. Когда я запускаю приведенный ниже код и принуждаю его к нормальному файлу data.frame, он работает.
library(dplyr)
df1 <- df %>%
group_by(client, year) %>%
summarise(tot = sum(rev)) %>%
data.frame() %>%
arrange(year, desc(tot))
Мне что-то не хватает или мне нужно будет делать это каждый раз при попытке arrange
grouped_df сгруппированной переменной?
R Версия: 3.1.1 Версия пакета dplyr: 0.3.0.2
РЕДАКТИРОВАТЬ 11/13/2017: Как отмечено lucacerone, начиная с dplyr 0.5, при сортировке организация снова игнорирует группы. Итак, мой оригинальный код теперь работает так, как я ожидал.
аранжировка() снова игнорирует группировку, возвращаясь к поведению dplyr 0.3 и ранее. Это делает аранжировку() несовместимой с другими глаголами dplyr, но я думаю, что это поведение, как правило, более полезно. Несмотря на это, он не будет меняться снова, поскольку все больше изменений просто вызовут больше путаницы.