这是我的数据:
>my.cut <- cut(my.variable, breaks = c(-Inf, -0.5, -0.25, -0.1, 0, 0.02, 0.05, 0.15, 0.3, 0.5, 1, Inf), right = FALSE)
>levels(my.cut)
"[-Inf,-0.5)" "[-0.5,-0.25)" "[-0.25,-0.1)" "[-0.1,0)" "[0,0.02)" "[0.02,0.05)" "[0.05,0.15)" "[0.15,0.3)" "[0.3,0.5)" "[0.5,1)" "[1, Inf)"
预期结果:
>levels(my.cut)
"[-Inf,-0.5)" "[-0.5,-0.25)" "[-0.25,-0.1)" "[-0.1,0)" "0" "(0,0.02)" "[0.02,0.05)" "[0.05,0.15)" "[0.15,0.3)" "[0.3,0.5)" "[0.5,1)" "[1, Inf)"
在预期的结果中,有一个数字0
,我只想选择my.variable==0
,但使用my.cut
的公式,没有单一的原因breaks
1}}只能用于间隔。那我该怎么办?
希望尽快得到答案!谢谢!
答案 0 :(得分:1)
我认为你所希望的最好的'切割'是为0指定一个非常小的范围,即
cps = c(-Inf, -0.1, 0-.Machine$double.eps, 0+.Machine$double.eps, 0.02, Inf)
bgroup = cut(c(-10, 10, 0,0), breaks = cps)
cat(deparse(levels(bgroup)), "\n") ## use this to edit the levels more easily
levels(bgroup) = c("(-Inf, -0.1]", "(-0.1,0)", "0", "(0,0.02]", "(0.02, Inf]")
table(bgroup)
显然,显示级别与用于剪切数据的显示级别不同,但是如果你可以使用0左右的那个窗口,则解决方案是使用该值形成剪切然后更改标签。
答案 1 :(得分:1)
您可以将每个值明确地放入一个组中。这更灵活,但也更冗长。
这样做的一种方法是定义一个定制切割函数,然后将其应用于矢量的每个元素。
.First
我只完成了一些您想要的分组,但我认为应该明白如何添加额外的分组。