私は R が初めてで、連続変数を 2 つのカテゴリに分割しようとしています。次のことを前提とします。
y = c(6.3, 6.2, 6.2, 5.5, 6.9, 6.8, 5.3, 5.3, 5.4, 5.2, 7.2, 7.1, 8.1, 8.2, 8.2, 7.4, 6.7, 7.2, 7.9, 8.0, 6.5, 6.6, 6.5, 7.2, 7.2, 6.8, 6.7)
cuts = cut(y, breaks=2)
cuts
[1] (5.197,6.7] (5.197,6.7] (5.197,6.7] (5.197,6.7] (6.7,8.203] (6.7,8.203] (5.197,6.7] (5.197,6.7] (5.197,6.7] (5.197,6.7] (6.7,8.203]
[12] (6.7,8.203] (6.7,8.203] (6.7,8.203] (6.7,8.203] (6.7,8.203] (6.7,8.203] (6.7,8.203] (6.7,8.203] (6.7,8.203] (5.197,6.7] (5.197,6.7]
[23] (5.197,6.7] (6.7,8.203] (6.7,8.203] (6.7,8.203] (6.7,8.203]
Levels: (5.197,6.7] (6.7,8.203]
ベクトルの最後にある6.7という値に特に興味があります。なぜ 6.7 は区間 (6.7, 8.203] に入り、(5.197, 6.7] に入らないのですか? 私が理解する限り、6.7 は区間 (6.7, 8.203] の一部であってはなりません。
編集:
コメントで指摘されているように、6.7は実際には6.7000000000000001776 です。
options(digits=20);
y
[1] 6.2999999999999998224 6.2000000000000001776 6.2000000000000001776 5.5000000000000000000 6.9000000000000003553 6.7999999999999998224
[7] 5.2999999999999998224 5.2999999999999998224 5.4000000000000003553 5.2000000000000001776 7.2000000000000001776 7.0999999999999996447
[13] 8.0999999999999996447 8.1999999999999992895 8.1999999999999992895 7.4000000000000003553 6.7000000000000001776 7.2000000000000001776
[19] 7.9000000000000003553 8.0000000000000000000 6.5000000000000000000 6.5999999999999996447 6.5000000000000000000 7.2000000000000001776
[25] 7.2000000000000001776 6.7999999999999998224 6.7000000000000001776
追加の質問:
新しい要素がどの間隔に収まるかを確認したいので、後で参照できるように間隔の境界を保存します。したがって(5.197,6.7] (6.7,8.203]
、カットによって生成された間隔があり、新しい要素を取得し、x = 6.7
それがどの間隔に収まるかを確認したいとします。5.197 < x <= 6.7
ベクトルからの元の6.7が2番目の間隔に落ちたのに対し、最初の間隔に入るかどうかを確認します。
cuts = cut(y, breaks=2, dig.lab=17)
両方の要素を同じ間隔に入れるための私の方法は本当にここにありますか?