我有这部分数据帧(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
我猜错误是由于第一列的恒定性
任何解决方案?
谢谢
答案 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