R 使用DT软件包的数据表排序因子

R 使用DT软件包的数据表排序因子,r,sorting,shiny,dt,R,Sorting,Shiny,Dt,我想以5%的增量显示数据,例如5-10%、10-15%等。为此,我有一个数据框,将它们存储为一个因子,其中级别是范围的中点,标签是要显示的范围。例如,12.5级将标记为10-15% 但是,我在使用datatable正确排序时遇到了问题 library('DT') example <- data.frame(name = c('A', 'B', 'C', 'D'), value = factor(c(7.5, 12.5, 7.5, 17.5),

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

但是,我在使用datatable正确排序时遇到了问题

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')))
library('DT')

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

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))))
library('DT')

你可以考虑在你的值上使用<代码>剪切>代码>函数。这将为您生成一个正确排序的因子。您可以使用
labels=c('5-10%,'10-15%,'15-20%)
而不是NicE和rawr的解决方案来处理我的特定数据。谢谢你的帮助!非常狡猾,很高兴知道这对我也很有效,但我发现order列也有帮助:
options=list(columnDefs=list(list(visible=FALSE,targets=2)),order=list(list(list(2,'asc'))