在R中使用bin.var函数时,break不是唯一的

时间:2017-09-23 12:53:56

标签: r

我有这部分数据帧(dfPancan2):

  -0.00616222 3.0501945 4.135684 
  -0.00616222 1.6888945 2.902784
  -0.00616222 1.6214945 2.621384
  -0.00616222 1.5550945 2.315284
  -0.00616222 1.4541945 2.286884
  -0.00616222 1.2254945 2.155184
  -0.00616222 1.2177945 2.068584
  -0.00616222 1.2092945 1.958784
... ... ...

当我使用这个功能时:

dfPancan2$variable <-
  with(dfPancan2,
       bin.var(
         dfPancan2[c(1:nrow(dfPancan2)), 1],
         bins = 3,
         method = 'proportions',
         labels = c('D', 'M', 'UP')
       ))

它将得到以下数据帧:

  -0.00616222 3.0501945 4.135684 UP
  -0.00616222 1.6888945 2.902784 UP
  -0.00616222 1.6214945 2.621384 UP
  -0.00616222 1.5550945 2.315284 M
  -0.00616222 1.4541945 2.286884 M
  -0.00616222 1.2254945 2.155184 D
  -0.00616222 1.2177945 2.068584 D
  -0.00616222 1.2092945 1.958784 D
... ... ...

但它收到了一条错误消息:

Error in cut.default(x, quantile(x, probs = seq(0, 1, 1/bins), na.rm = TRUE),  : 
  the 'breaks' are not distinct

我猜错误是由于第一列的恒定性

任何解决方案?

谢谢

1 个答案:

答案 0 :(得分:1)

你的猜测是正确的。问题是由于第一列的恒定性。 您不能将常量数值变量的范围拆分为宽度相等或频率相等的容器。
如果您剪切第二列,您的代码可以正常工作:

dfPancan2 <- as.data.frame(read.table(text="
  -0.00616222 3.0501945 4.135684 
  -0.00616222 1.6888945 2.902784
  -0.00616222 1.6214945 2.621384
  -0.00616222 1.5550945 2.315284
  -0.00616222 1.4541945 2.286884
  -0.00616222 1.2254945 2.155184
  -0.00616222 1.2177945 2.068584
  -0.00616222 1.2092945 1.958784
"))

library(Rcmdr)
dfPancan2$variable <-
  bin.var(dfPancan2[, 2], bins = 3,
         method = 'proportions',
         labels = c('D', 'M', 'UP'))

dfPancan2

输出结果为:

           V1       V2       V3 variable
1 -0.00616222 3.050194 4.135684       UP
2 -0.00616222 1.688894 2.902784       UP
3 -0.00616222 1.621495 2.621384       UP
4 -0.00616222 1.555095 2.315284        M
5 -0.00616222 1.454195 2.286884        M
6 -0.00616222 1.225494 2.155184        D
7 -0.00616222 1.217794 2.068584        D
8 -0.00616222 1.209294 1.958784        D