使用DT软件包的数据表中的订购因子

Sam*_*Sam 3 sorting r shiny dt

我有一些要以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')))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

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

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

Nic*_*icE 5

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

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))))
Run Code Online (Sandbox Code Playgroud)

  • NicE知道很偷偷摸摸 (3认同)