2016-09-01 5 views
2

私はデータセットを持って、私は以下の関連する列の(小さなサブセット)を含むよ、dplyr :: mutateを使用して異なる行を操作できますか?

year ID type result 
2003 1 new  closed 
2003 2 new  transferred 
2003 3 subsequent closed 
2003 4 subsequent diverted 
.... 
2015 1000 new  closed 

私は何を計算したいことはありません(、subsequentsの割合である。subsequents /(no.subsequentsの。+無ニュースの)そのように、一年の結果によってグループ化:

year result subsequent_frac 
2003 closed 0.10 
2003 transferred 0.05 
2003 .... 
.... 
2015 closed 0.05 
2015 transferred 0.1 

私はカウントを取得し、別々にそれぞれの結果を行うためのGROUP_BYと要約して、段階的にで行うことができます知っている....私はこれをもっと素早く行う方法があるのだろうかと思っていた。

+0

group_by(年、結果) - 複数の列をグループ化できます。それがあなたの問題かどうかはわかりません。 – Frank

+0

@Frank、私は非常にはっきりしていない場合は謝罪します、私は年と結果をグループ化してカウントを得ることができることを知っていますが、毎年と結果のためにそれらのカウントで操作したい。たとえば、2003年の場合、結果「クローズ」の「新規」は44,711カウント、後続の小数= 3856 /(3856 + 44711)を計算する同じ結果の「後続」は3856カウントです。 – UIyer

+0

より具体的な例を投稿し、それを再現するコードを付けることで、より良い運を得られるかもしれないと思います。 http://stackoverflow.com/a/28481250/ – Frank

答えて

1

これはあなたが探しているものですか? summarizeを適用すると、1つのレベルのグループ化が削除されるため、2つ目のgroup_byが削除されます。

dfSummarized <- group_by(df, year, type) %>% 
      summarise(subsequent_frac = n()) %>% 
      #group_by(type) %>% # maybe you don't need this? 
      mutate(freq = subsequent_frac/sum(subsequent_frac)) 
+0

ありがとう@Valter。 dfSummarized < - group_by(df、年、型、結果)%>% 集計(後続フラクタル= n())%>% group_by(年、結果)%>% mutate(freq =後続フラッグ/合計(後続フラフ)) ' – UIyer

+0

@UIyer喜んでそれが助け! –

関連する問題