从cut2帮助文件:
像切割但左端点的功能是包容性的,标签的形式是[下,上],除了最后一个间隔是[下,上].如果给出剪切,默认情况下将确保剪切包括整个x范围.
所以,cut2基本上cut有一些不同的默认值.我们来看看吧cut.
从cut帮助文件:
cut将x的范围划分为间隔,并根据它们落入的间隔对x中的值进行编码.最左边的间隔对应于第一级,下一个最左边对应于第二级,依此类推.
从quantile帮助文件:
通用函数分位数产生对应于给定概率的样本分位数.最小的观察值对应于0的概率,最大的概率对应于1的概率.
一个削减了范围x,另一个削减了"频率" x.
举例说明:
out <- 0:100
out2 <- c(seq(0, 50, 0.001), 51:100)
Run Code Online (Sandbox Code Playgroud)
两者都有相同的范围.从0到100.
levels(cut(out,4, include.lowest = T))
[1] "[-0.1,25]" "(25,50]" "(50,75]" "(75,100]"
levels(cut(out2,4, include.lowest = T))
[1] "[-0.1,25]" "(25,50]" "(50,75]" "(75,100]"
Run Code Online (Sandbox Code Playgroud)
但是还有更多的"数据点"存在out2,尤其是0到50之间的值.因此,它们在该范围内的频率不同:
quantile(out)
0% 25% 50% 75% 100%
0 25 50 75 100
quantile(out2)
0% 25% 50% 75% 100%
0.0000 12.5125 25.0250 37.5375 100.0000
Run Code Online (Sandbox Code Playgroud)
这之间的区别cut和quantile.
上面的例子也告诉你两者是否一致,即在均匀分布的情况下.例如,从0到100的序列均匀地分布在0到100的范围内.这里,两者基本相同.
为了进一步说明,请考虑:
outdf <- data.frame(out=out, cut=cut(out,4, include.lowest = T))
out2df <- data.frame(out=out2, cut=cut(out2,4, include.lowest = T))
table(outdf$cut)
[-0.1,25] (25,50] (50,75] (75,100]
26 25 25 25
table(out2df$cut)
[-0.1,25] (25,50] (50,75] (75,100]
25001 25000 25 25
Run Code Online (Sandbox Code Playgroud)
在这里,您可以清楚地看到每个箱子中的不同频率.