2017-12-13 12 views
1

私は、年齢間隔を作成するためにカット関数を使用しようとしています。残念ながら、最初のブレークの下端に一致する値のNAsを受け取ります。例えばカット関数は、間隔のためのNAを返します

:年齢は18と45の上にあるすべての値について

AGE <- sample(18:50, 100, replace = TRUE) 
AGE_GROUPS <- cut(AGE, breaks = c(18, 27, 36, 45)) 
DF <- data.frame(AGE, AGE_GROUPS) 

、IはAGE_GROUPS変数にNAを受け取ります。 AGE_GROUPSの一番下の括弧に18が含まれていることを確認するにはどうすればよいのですか?一番上の括弧に> 45の値がすべて含まれていることを確認するにはどうすればよいですか?

+0

以下の回答に加えて、私は通常、レンジの面でより合理的なカットを得るために行うトリックを投稿したいと思います。私は '['または ']'が必要かどうかに応じて、変数の 'min'と' max'値で "再生"する傾向があります。例として、この 'AGE < - sample(18:50、100、replace = TRUE)を参照してください。 ユニーク(cut(AGE、breaks = c(min(AGE)-19、27、36、45、max(AGE)))); (AGE、ブレーク= c(最小(AGE)、19,27,36,45、最大(AGE)+1)、右= F)) '。あなたがチェックする必要があるのは、重複した休憩がないことだけです。 – AntoniosK

答えて

3

ブレイクは中間ブレイクではなく、エンドポイントでもあります。あなたがコーディングエラーを外れ値をキャッチするのに役立ちます

breaks = c(0, 18, 27, 36, 45, 120) 

を使用することができ、あなたはもう少し控えめ

breaks = c(-Inf, 18, 27, 36, 45, Inf) 

ですべてのものを得ることを確認することができます。 include.lowest = TRUEも必要です。例については、?cutを参照してください。

+0

それは技術的/実践的な面から私の問題を解決します。ありがとう!概念的に言えば、これは、18のブレークは18の値が18-27の括弧に含まれないことを意味するのでしょうか?この目的のために17-27ブラケットを作る必要がありますか? –

+0

デフォルトは 'right = TRUE'です。これは、*"区間は右に閉じて(左に開きます) "*(やはり'?cut'を参照)、つまり18〜27の区間は'(18、27)'(デフォルトのラベル)では、27ではなく18を使用します。分かりやすくするため、非整数のブレークポイントを使用することをお勧めします。したがって、間隔に18と27の両方を含める場合は、17.5と27.5をなぜそれが少し混乱しているのだろうかと疑問があるならば、 'cut'は整数だけではなく、任意の数値データ – Gregor

+0

偉大な、非常に役立つ!私はそれを感謝します。 –

関連する問題