4

5 ~ 10%、10 ~ 15% など、5% 刻みで表示したいデータがあります。これを行うには、それらを因子として格納するデータ フレームを用意します。レベルは中間点です。範囲、ラベルは表示する範囲です。たとえば、レベル 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 に答える