cutで微妙にはまる
以下のような数値列があるとする。
smp <- seq(62.5, 110, by = 2.5) [1] 62.5 65.0 67.5 70.0 72.5 75.0 77.5 80.0 82.5 85.0 87.5 90.0 92.5 95.0 97.5 100.0 102.5 105.0 107.5 110.0
これをcut関数で上記数値列と同じ幅で区間分割してみる。
すると以下のようになり、100以上がなんだかおかしい。
>table(cut(smp, breaks = cseq(62.5, 110, by = 2.5), right = FALSE)) [62.5,65) [65,67.5) [67.5,70) [70,72.5) [72.5,75) [75,77.5) [77.5,80) [80,82.5) [82.5,85) [85,87.5) [87.5,90) [90,92.5) [92.5,95) 1 1 1 1 1 1 1 1 1 1 1 1 1 [95,97.5) [97.5,100) [100,102) [102,105) [105,108) [108,110) 1 1 1 1 1 1
これは数値の桁数を指定してやれば望みのものが得られる。
> table(cut(smp,breaks=c(-Inf,seq(62.5,110,by=2.5),Inf),dig.lab=4)) (-Inf,62.5] (62.5,65] (65,67.5] (67.5,70] (70,72.5] (72.5,75] (75,77.5] (77.5,80] (80,82.5] (82.5,85] (85,87.5] (87.5,90] (90,92.5] (92.5,95] (95,97.5] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (97.5,100] (100,102.5] (102.5,105] (105,107.5] (107.5,110] (110, Inf] 1 1 1 1 1 0