2017-12-19 7 views
-3
table(mtcars$cyl) 

4 6 8 
11 7 14 

低周波の項をフィルタリングしたいとします。この場合、10未満です。これを行うには、エレガントなdplyr esqueの方法がありますか?周波数に基づくdplyrチェーンフィルタ

結果は、両方とも10回以上発生するため、4と8 cylのみのデータフレームになります。 cylによって

+1

library(dplyr) mtcars %>% group_by(cyl) %>% mutate(freq = n()) %>% ungroup() %>% filter(freq > 9) %>% select(-freq) 
[回以上発生した列の値をリターンDF]の可能な重複(https://stackoverflow.comを/ questions/24503279/return-df-with-a-columns-values-that-occur-once-more)また、[Rのグループで一度だけ発生する観測を返す](https://stackoverflow.com/questions/36145061/return-observations-that-only-occur-once-in-a-group-in-r)および[グループごとの行数に基づくサブセットデータフレーム](https://stackoverflow.com/questions)/20204257/subset-data-frame-based-on-group-rows-per-group) –

+0

ここでのプロトコルは何ですか?人々は下降しているので削除されますが、質問には回答がありましたので、その人には不公平です。また、私はキーワード "頻度"を使用して上記の答えを返さなかったので、誰かが知っているので、おそらくこの質問はその言葉を使っている人を探すのに役立ちます –

答えて

1

基、任意freqカラム除去、フィルタ、行をカウント:

+0

ありがとう、 ) 行う? –

+0

グループ化を 'cyl'で取り除きます。手続きが完了すると、一般的に「アングループ化」するのが最善ですが、後で意図しない結果が生じることがあります。 – neilfws

+2

なぜ 'mtcars%>%group_by(cyl)%>%filter(n()> 9)'ではありませんか? –