2017-03-27 9 views
2

を使用して、それを減少させた後、データを表I持って、次のデータセット:は、頻度数

5 3 3 5 10 10 3 8 2 12 8 6 2 5 6 5 10 4 3 5 4 3 3 5 8 3 5 6 6 1 10 3 6 6 5 8 3 4 3 4 4 3 2.5 1 4 2 2 3 5 10 4 4 6 3 2 3 8 3 4 4 3 3 4 8 4 4 2 4 4 3 2 10 6 3 7 3 5 3 1 4 3 4 3 4 4 2 3 2 4 7 4 6 3.5 3.5 5 3 4 3 5 3 1.5 2.5 3 7 2 5 3 4 2 4 5 3 4 5 4.5 4 6 3 2 1 3 2 2 3 4 6 2 4 2 3 6 1.5 3 3 1 4 3 3 2 3 2 2 6 3 15 1 4 5 2 6 2 4 8 2 8 4 4 4 3 8 4 4 8.5 3 2 7 0.5 3 3 3 2 3 2 4 5 6 2 3.5 3 3 2 2 2.5 2 2 5 2 8 2 4 3 3 2 7 2 4 2 4 4 3 2.5 3 3 3 5 

関数テーブル()は次の値を返す:

table(df$var) 

0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 8.5 10 12 15 
    1 6 2 35 4 54 3 41 1 19 15 5 10 1 6 1 1 

私は何をしたいことは省略してありますcount()が< = 6であるため、table()関数がデータ上で実行されたときに、次のような結果が返されるようになります。

2 3 4 5 6 8 
35 54 41 19 15 10 

私が何をしようとしています:)(

test <- as.data.frame(table(df$var)) 
test[test$Freq > 6,2] 

をして、テーブルを得るためにそれを使用。 これは本当に悪い作業です。

他にも最短の方法がありますか、おそらく1ライナーですか?

+1

'table(df $ var)[table(df $ var)> 6]' – Kristofersen

+0

10の10 ...私もsに近い類似の何か... ...ありがとう。 –

答えて

3

あなたが現在行っていることは、まったく問題ありません。ただし、コードを短くしたい場合は、data.frameを考慮してwithを使用して新しいdata.frameを評価することができます。私は冗長であるので、tableを2回実行することを避けようとします。

with(data.frame(table(x)), data.frame(x = x[Freq>6], Freq = Freq[Freq>6])) 
# x Freq 
#1 2 35 
#2 3 54 
#3 4 41 
#4 5 19 
#5 6 15 
#6 8 10 

DATA

x = c(5, 3, 3, 5, 10, 10, 3, 8, 2, 12, 8, 6, 2, 5, 6, 5, 10, 4, 3, 
5, 4, 3, 3, 5, 8, 3, 5, 6, 6, 1, 10, 3, 6, 6, 5, 8, 3, 4, 3, 
4, 4, 3, 2.5, 1, 4, 2, 2, 3, 5, 10, 4, 4, 6, 3, 2, 3, 8, 3, 4, 
4, 3, 3, 4, 8, 4, 4, 2, 4, 4, 3, 2, 10, 6, 3, 7, 3, 5, 3, 1, 
4, 3, 4, 3, 4, 4, 2, 3, 2, 4, 7, 4, 6, 3.5, 3.5, 5, 3, 4, 3, 
5, 3, 1.5, 2.5, 3, 7, 2, 5, 3, 4, 2, 4, 5, 3, 4, 5, 4.5, 4, 6, 
3, 2, 1, 3, 2, 2, 3, 4, 6, 2, 4, 2, 3, 6, 1.5, 3, 3, 1, 4, 3, 
3, 2, 3, 2, 2, 6, 3, 15, 1, 4, 5, 2, 6, 2, 4, 8, 2, 8, 4, 4, 
4, 3, 8, 4, 4, 8.5, 3, 2, 7, 0.5, 3, 3, 3, 2, 3, 2, 4, 5, 6, 
2, 3.5, 3, 3, 2, 2, 2.5, 2, 2, 5, 2, 8, 2, 4, 3, 3, 2, 7, 2, 
4, 2, 4, 4, 3, 2.5, 3, 3, 3, 5) 
+0

あなたの仕事は素晴らしかったが、私はちょうど気づいた\t クリストフォルセンの解決策はまだ良い 'table(df $ var)[table(df $ var)> 6]'あなたは同意するでしょうか?とにかくありがとう。 –

+0

私はあなたの仕事に感謝します:) –

+1

@MadhuSareen、Kristofersenの解決策では、あなたは本当に必要ではない 'テーブル 'を2回実行しています。しかし、それは小さなデータセットでは問題にはなりません。 –

1

これはあまりにもFilter機能のための良い候補である:

Filter(function(y) y > 6, table(x)) 
## x 
## 2 3 4 5 6 8 
## 35 54 41 19 15 10 

( "x" はデシベルの答え@からである。)