R:功能削减

时间:2015-07-15 15:44:26

标签: r break cut

这是我的数据:

>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}}只能用于间隔。那我该怎么办?

希望尽快得到答案!谢谢!

2 个答案:

答案 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

我只完成了一些您想要的分组,但我认为应该明白如何添加额外的分组。