3

サブセット()関数に問題があります。観測数によってデータフレームの要素をサブセット化するにはどうすればよいですか?

   NAME      CLASS         COLOR   VALUE      
   antonio       B          YELLOW       5
   antonio       B          BLUE       8
   antonio       B          BLUE       7 
   antonio       B          BLUE      12 
   luca          C          YELLOW    99
   luca          B          YELLOW    87
   luca          B          YELLOW    98
   giovanni      A          BLUE      48

VALUEの平均をとるために、「NAME」、「CLASS」、「COLOR」の3つの要素を少なくとも3回比較したデータを取得したいと思います。この場合、私は以下を取得します:

   NAME      CLASS         COLOR   VALUE      
   antonio       B          BLUE       mean

なぜなら、アントニオは各因子について3つの観測値を持つ唯一のものだからです。

どうもありがとうございます

ニック

4

1 に答える 1

10

tableこの関数は次のように使用できます。

subset(df, table(FACTOR)[FACTOR] >= 3)
#    FACTOR VALUE
# 1 ANTONIO     5
# 2 ANTONIO     8
# 3 ANTONIO     7

理解しやすくするために、これらが何を返すかを確認してください。

table(df$FACTOR)
table(df$FACTOR)[df$FACTOR]
table(df$FACTOR)[df$FACTOR] >= 3

aveこの関数を使用して、観測数を計算することもできます。

subset(df, ave(VALUE, FACTOR, FUN = length) >= 3)

コメントや更新された質問で質問したような複数の要因がある場合、この最後の方法はもう少し柔軟になる可能性があります。できるよ:

subset(df, ave(VALUE, NAME, CLASS, COLOR, FUN = length) >= 3)
于 2012-12-08T12:35:33.907 に答える