2016-09-09 6 views
2

グループ化されたarrange()関数に依存するdplyr 0.4.3で書かれたコードがたくさんあります。 0.5リリースの時点で、アレンジはグループ化を適用しなくなりました。dplyr 0.5:グループ化を使用してアレンジ()

この決定は、他のdplyr動詞と矛盾しているため、私はうんざりしています。グループを解除する必要がある場合は、必ず事前にungroup()することができます。私は、おそらくgrouped_byの動作を保持するための配列()のパラメータを期待していたでしょうが、悲しいかな!

したがって、グループ化されたアレンジを書き直す必要があります。この時点で、私の唯一の選択肢は、アレンジコールでパイプを分割し、グループをループし、グループ別にグループを整理し、結果を再度バインドすることです。私はより洗練されたソリューションがあると思っていますか?

以下はMREです。group_by(cyl)ごとにwtでcumsumを実行したいと思います。アイデアや提案に感謝します。

library(dplyr) 

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

グループ化する前に「整理したい」と言っていますか? '0.5.0'を使ってあなたのコードを実行することに基づいて、私はcyの各グループ内で降順に 'mpg'を得ます。 – akrun

+0

@akrun - あなたは正解です、そしてありがとう。その場合、私は明らかに[リリースノート](https://github.com/hadley/dplyr/releases)を誤解していました。最初の注釈をどのように解釈しますか:「グループ化をもう一度無視する」 – csrvermaak

+1

パイプの終わりでデータセット全体を '表示 'すると、事実が私に「円筒」で表示されません。それは近いですが、シリンダーの数はmpgと非常に関連しているからです。グループ内でアレンジするには、アレンジ内にグループ化変数を追加します。この例では 'mtcars%>%group_by(cyl)%>%arrange(cyl、desc(mpg))'のようになります。 – aosmith

答えて

6

arrange内の他の順序変数の前にグループ化変数を追加し、dplyr 0.5でグループ内で注文します。

mtcars %>% 
     group_by(cyl) %>% 
     arrange(cyl, desc(mpg)) 
関連する問題