4

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

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

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')))

在此处输入图像描述

如您所见,它似乎是对字符串的第一个数字进行排序,而不是按因子的级别排序。

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

4

1 回答 1

6

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

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))))
于 2016-02-26T17:15:12.893 回答