R 使用分位数创建因子变量

R 使用分位数创建因子变量,r,R,我想用另一个变量a的分位数创建一个因子变量 我尝试了以下代码: > cut(value, breaks=quantile(value, probs=seq(0,1, by=0.25)), include.lowest=TRUE)) 但它不起作用,因为有些分位数是相同的,所以它不知道如何剪切 > 'breaks' are not unique 示例:q1=2 q2=5 q3=5 q4=8 在这种情况下我该怎么办?也许我们可以在这种情况下随机剪切这似乎有效 x=c(2,

我想用另一个变量a的分位数创建一个因子变量

我尝试了以下代码:

> cut(value, breaks=quantile(value, probs=seq(0,1, by=0.25)),
      include.lowest=TRUE))
但它不起作用,因为有些分位数是相同的,所以它不知道如何剪切

>  'breaks' are not unique
示例:q1=2 q2=5 q3=5 q4=8

在这种情况下我该怎么办?也许我们可以在这种情况下随机剪切

这似乎有效

x=c(2,5,5,8,10)
qnt <- quantile(x,seq(0,1,.25))

cut(x,unique(qnt),include.lowest=TRUE)
# [1] [2,5]  [2,5]  [2,5]  (5,8]  (8,10]
# Levels: [2,5] (5,8] (8,10]
x=c(2,5,5,8,10)
这似乎有效

x=c(2,5,5,8,10)
qnt <- quantile(x,seq(0,1,.25))

cut(x,unique(qnt),include.lowest=TRUE)
# [1] [2,5]  [2,5]  [2,5]  (5,8]  (8,10]
# Levels: [2,5] (5,8] (8,10]
x=c(2,5,5,8,10)

qnt可能
breaks=unique(分位数(…
)?可能
breaks=unique(分位数(…
)好,但我需要将向量分成5个部分,而不是3个部分。如果两个分位数相等,则行在一个或另一个分位数间隔内传输对我来说是可以的。
cut(x,5)
给出了五个部分,尽管每个箱子的观察量并不相等;它们的间隔大致相等。也许你会更喜欢这样:
排名(x)%/%floor(长度(x)/5)
?你的序列只将其分成四个箱子,四分位:
seq(0,1,by=0.25)
。好的,但我需要将向量分成5部分,而不是3部分。如果两个分位数相等,则行在一个或另一个分位数间隔内传输就可以了。
cut(x,5)
提供了五个部分,尽管每个箱子的观察量并不相等;它们的间隔大致相等。也许你会更喜欢这样:
排名(x)%/%floor(长度(x)/5)
?你的序列只将其分成四个箱子,四分位:
seq(0,1,by=0.25)
binx_ranges <- by(x,binx,range)
# binx: 0
# [1] 1 1
# ------------------------------------------------------------ 
# binx: 1
# [1] 1 2
# ------------------------------------------------------------ 
# binx: 2
# [1] 2 3
# ------------------------------------------------------------ 
# binx: 3
# [1] 3 3

table(binx,x)
#     x
# binx  1  2  3
#    0 26  0  0
#    1  8 19  0
#    2  0 13 14
#    3  0  0 21