投稿

ラベル(ddply)が付いた投稿を表示しています

Rのデータフレームから少数の行を削除する

例えば、↓こんなデータがあったとして、 # サンプルデータの作成 name  <- c("Anne", "Bob", "Carl", "Dann", "Eric", "Fred") fruits <- c("orange", "apple", "orange", "durian", "orange", "apple") df <- data.frame(name, fruits) df # 中身を見てみる   name fruits 1 Anne orange 2  Bob  apple 3 Carl orange 4 Dann durian 5 Eric orange 6 Fred  apple みんなの好きな果物のデータだとして、1人しかいないような少数派の行は除去したいと。この例だと、ダンのドリアンを取り除きたいと。 ddplyを使って度数をカウントし、新たに度数(count)の列として追加(transform)。 library(plyr) ddply(df, "fruits", transform, count=length(fruits))   name fruits count 1  Bob  apple     2 2 Fred  apple     2 3 Dann durian     1 4 Anne orange     3 5 Carl orange     3 6 Eric orange     3 で、このcount列を条件として、データフレームをフィルタすればいいかなと。 dd <- ddply(df, "fruits", transform, count=length(fruits)) dd[ dd$count > 1, ] # 少数派の行を削除   name fruits count 1  Bob  apple ...