R创建范围因子级别

R创建范围因子级别,r,labeling,R,Labeling,我希望自动执行以下过程: 从向量中获取最小值和最大值,并在给定特定步长的情况下定义从最小值到最大值的步长。现在,向量中的每个值都被分配到一个标签(因子级别),当值为27.45时,该标签就属于这个范围,例如“20-30” 目前我正在使用这个for循环 for (label_willi_counter in 1:length(willi)) { if(willi[label_willi_counter] < 10) label_willi = c(label_willi, "0 -

我希望自动执行以下过程:

从向量中获取最小值和最大值,并在给定特定步长的情况下定义从最小值到最大值的步长。现在,向量中的每个值都被分配到一个
标签
(因子级别),当值为
27.45
时,该标签就属于这个范围,例如
“20-30”

目前我正在使用这个for循环

for (label_willi_counter in 1:length(willi)) {
  if(willi[label_willi_counter] < 10)
    label_willi = c(label_willi, "0 - 10")
  else if(willi[label_willi_counter] < 20)
    label_willi = c(label_willi, "10 - 20")
  else if(willi[label_willi_counter] < 30)
    label_willi = c(label_willi, "50 - 30")
  else if(willi[label_willi_counter] < 40)
    label_willi = c(label_willi, "30 - 40")
  else if(willi[label_willi_counter] < 50)
    label_willi = c(label_willi, "40 - 50")
  else if(willi[label_willi_counter] < 60)
    label_willi = c(label_willi, "50 - 60")
  else if(willi[label_willi_counter] < 70)
    label_willi = c(label_willi, "60 - 70")
  else if(willi[label_willi_counter] < 80)
    label_willi = c(label_willi, "70 - 80")
  else if(willi[label_willi_counter] < 90)
    label_willi = c(label_willi, "80 - 90")
  else
    label_willi = c(label_willi, "90 - 100")
}
for(1中的标签\威利\计数器:长度(威利)){
if(威利[标签威利计数器]<10)
label_willi=c(label_willi,“0-10”)
否则如果(威利[标签威利计数器]<20)
标签_-willi=c(标签_-willi,“10-20”)
否则如果(威利[标签威利计数器]<30)
标签_-willi=c(标签_-willi,“50-30”)
否则如果(威利[标签威利计数器]<40)
label_willi=c(label_willi,“30-40”)
否则如果(威利[标签威利计数器]<50)
label_willi=c(label_willi,“40-50”)
否则如果(威利[标签威利计数器]<60)
标签_-willi=c(标签_-willi,“50-60”)
否则如果(威利[标签威利计数器]<70)
标签_-willi=c(标签_-willi,“60-70”)
否则如果(威利[标签威利计数器]<80)
label_willi=c(label_willi,“70-80”)
否则如果(威利[标签威利计数器]<90)
label_willi=c(label_willi,“80-90”)
其他的
label_-willi=c(label_-willi,“90-100”)
}
嗯,这是可行的,但我相信有更好(可能更快)的方法来做到这一点。此示例适用于
最小值=0
最大值=100
步长=10
。我正在寻找一种更通用的方法来实现这一点。

试试
cut

x
# [1] 60 35 21 30  6 19 49 17 59 93  9 96 46 63  3 58 13 86 47 16

cut(x, breaks = seq(0,100,10), labels = lbl)

#[1] 50-60  30-40  20-30  20-30  0-10   10-20  40-50  10-20  50-60  90-100 0-10   #90-100 40-50  60-70 
#[15] 0-10   50-60  10-20  80-90  40-50  10-20 
#Levels: 0-10 10-20 20-30 30-40 40-50 50-60 60-70 70-80 80-90 90-100
数据

x <- c(60L, 35L, 21L, 30L, 6L, 19L, 49L, 17L, 59L, 93L, 9L, 96L, 46L, 
63L, 3L, 58L, 13L, 86L, 47L, 16L)

lbl <- c("0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", 
"70-80", "80-90", "90-100")
x尝试
cut

x
# [1] 60 35 21 30  6 19 49 17 59 93  9 96 46 63  3 58 13 86 47 16

cut(x, breaks = seq(0,100,10), labels = lbl)

#[1] 50-60  30-40  20-30  20-30  0-10   10-20  40-50  10-20  50-60  90-100 0-10   #90-100 40-50  60-70 
#[15] 0-10   50-60  10-20  80-90  40-50  10-20 
#Levels: 0-10 10-20 20-30 30-40 40-50 50-60 60-70 70-80 80-90 90-100
数据

x <- c(60L, 35L, 21L, 30L, 6L, 19L, 49L, 17L, 59L, 93L, 9L, 96L, 46L, 
63L, 3L, 58L, 13L, 86L, 47L, 16L)

lbl <- c("0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", 
"70-80", "80-90", "90-100")

x听起来像是
?cut
的工作。谢谢,这是一个非常快速的回答,正是我想要的。听起来像是
?cut
的工作。谢谢,这是一个非常快速的回答,正是我想要的