【问题标题】:classify data into equal size groups将数据分成大小相等的组
【发布时间】:2021-01-17 06:24:56
【问题描述】:

我想把我的数据分成不同的类,每个类的宽度为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函数

标签: r cut bin


【解决方案1】:

使用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

数据

要读取发布的数据,复制并粘贴到 R 会话并运行:

variable <- scan(text = "
10
20
33
23
8
14
16
40
")

dput(variable) 的输出让 SO 用户更简单。

variable <- c(10, 20, 33, 23, 8, 14, 16, 40)

【讨论】:

    【解决方案2】:

    你可以使用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 <- structure(list(variable = c(10, 20, 33, 23, 8, 14, 16, 40)), 
          class = "data.frame", row.names = c(NA, -8L))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 2019-08-17
      相关资源
      最近更新 更多