2016-09-09 2 views
2

У меня есть много кода, написанного в dplyr 0.4.3, который опирался на сгруппированную функцию arr(). Начиная с релиза 0.5, организация больше не применяет группировку.dplyr 0.5: аранжировать() с помощью группировок

Это решение меня озадачивает, так как это делает аранжировку() несовместимой с другими глаголами dplyr, и, конечно, пользователь может просто разгруппировать(), прежде чем аранжировать(), если требуется разгруппировать. Я бы надеялся, что, возможно, параметр в расположении() сохранит групповое поведение, но, увы!

Поэтому я должен переписать свою группировку. На данный момент мой единственный вариант заключается в том, чтобы разбить трубку на аранжировщике, перебрать группы и упорядочить группу по группам, а затем снова привязать() результат. Я надеюсь, что может быть более элегантное решение?

Ниже MRE, я хотел бы запустить cumsum на wt per group_by (cyl). Большое спасибо за идеи/предложения.

library(dplyr) 

mtcars %>% 
    group_by(cyl) %>% 
    arrange(desc(mpg)) %>% 
    mutate(WtCum = cumsum(wt)) 
+1

Вы хотите сказать, что хотите «устроить» перед группировкой? Основываясь на запуске вашего кода с использованием '0.5.0', я получаю« mpg », упорядоченный по каждой группе цил – akrun

+0

@akrun - доброта, вы правы и благодарны. В этом случае я, очевидно, неправильно понял [примечания к выпуску] (https://github.com/hadley/dplyr/releases). Как вы интерпретируете первое примечание: «аранжировка() снова игнорирует группировку» – csrvermaak

+1

Вещи не выглядят по порядку «циллом» для меня, если я «просматриваю» весь набор данных в конце трубы. Это близко, но это потому, что количество цилиндров сильно связано с mpg. Чтобы упорядочить внутри групп, добавьте переменную группировки внутри аранжировки. Для этого примера это будет выглядеть как «mtcars%>% group_by (cyl)%>% arr (cyl, desc (mpg))' – aosmith

ответ

6

Чтобы заказать в группах в dplyr 0.5, добавьте группировку переменный перед другим переменным упорядочением в arrange.

mtcars %>% 
     group_by(cyl) %>% 
     arrange(cyl, desc(mpg))