R 将数据划分为大小相等的组

R 将数据划分为大小相等的组,r,cut,bin,R,Cut,Bin,我想把我的数据分成不同的类,每个类的宽度为10 例如: 第一数据 variable 10 20 33 23 8 14 16 40 新数据 variable classify group classify 10 10-20 2 20 20-30 3 33 30-40 4 23

我想把我的数据分成不同的类,每个类的宽度为10

例如:

第一数据

   variable
    10
    20
    33
    23
    8
    14
    16
    40
新数据

variable     classify    group classify
    10       10-20             2
    20       20-30             3
    33       30-40             4
    23       20-30             3
    8        0-10              1
    14       10-20             2
    16       10-20             2
    40       40-50             5

使用
cut
并按
10
中断。但要注意间隔的终点

brks <- seq(from = min(variable %/% 10) * 10,
            to = (max(variable %/% 10) + 1) * 10, 
            by = 10)
classify <- cut(variable, breaks = brks, include.lowest = TRUE, right = FALSE)
group <- match(classify, levels(classify))

data.frame(variable, classify, group)
#  variable classify group
#1       10  [10,20)     2
#2       20  [20,30)     3
#3       33  [30,40)     4
#4       23  [20,30)     3
#5        8   [0,10)     1
#6       14  [10,20)     2
#7       16  [10,20)     2
#8       40  [40,50]     5

您可以使用
floor
功能:

df$group_classify <- floor(df$variable/10) + 1
df$classify <- paste((df$group_classify - 1) * 10, 
                      df$group_classify * 10, sep = '-')
df

#  variable group_classify classify
#1       10              2    10-20
#2       20              3    20-30
#3       33              4    30-40
#4       23              3    20-30
#5        8              1     0-10
#6       14              2    10-20
#7       16              2    10-20
#8       40              5    40-50

df$group\u使用
cut
功能
variable <- c(10, 20, 33, 23, 8, 14, 16, 40)
df$group_classify <- floor(df$variable/10) + 1
df$classify <- paste((df$group_classify - 1) * 10, 
                      df$group_classify * 10, sep = '-')
df

#  variable group_classify classify
#1       10              2    10-20
#2       20              3    20-30
#3       33              4    30-40
#4       23              3    20-30
#5        8              1     0-10
#6       14              2    10-20
#7       16              2    10-20
#8       40              5    40-50
df <- structure(list(variable = c(10, 20, 33, 23, 8, 14, 16, 40)), 
      class = "data.frame", row.names = c(NA, -8L))