使用 DT 包的数据 table 中的排序因子

Ordering factors in data table using DT package

我想要以 5% 的增量显示数据,例如 5-10%、10-15% 等。为此,我有一个数据框将它们存储为一个因素,其中级别是范围的中点,标签是要显示的范围。例如,级别 12.5 将标记为 10-15%。

但是,我无法使用数据table正确排序。

library('DT')
example <- data.frame(name = c('A', 'B', 'C', 'D'),
                  value = factor(c(7.5, 12.5, 7.5, 17.5),
                                  levels = c(7.5, 12.5, 17.5),
                                  labels = c('5-10%', '10-15%', '15-20%')))

datatable(example,
      rownames = FALSE,
      options = list(order = list(1, 'asc')))


如您所见,它似乎是从字符串的第一个数字开始排序,而不是按因素级别排序。

关于如何获取数据 table 以对因子级别而不是字符串进行排序的任何想法? (除了在将数据框传递到数据之前对其进行排序 table - 我希望通过单击排序箭头可以在任一方向上正确排序 table)

您可以使用带有因子数值的隐藏列,并根据该隐藏列对因子进行排序:

library('DT')
value <- factor(c(7.5, 12.5, 7.5, 17.5),
                levels = c(7.5, 12.5, 17.5),
                labels = c('5-10%', '10-15%', '15-20%'))

example <- data.frame(name = c('A', 'B', 'C', 'D'),
                      value = value,
                      levels=as.numeric(value))

datatable(example,
          rownames = FALSE,
          options = list(columnDefs=list(list(orderData=2,targets=1),
                                         list(visible=FALSE,targets=2))))