小编sal*_*der的帖子

R:使用数据表重新排序因子级别(用于Plotly)

TL;博士

是否可以通过引用重新排序数据表中列的因子级别?据我所知,不是现有的答案:

  • 这有效,但不是通过引用(链接):table$x <- factor(table$x, levels = c("giraffes", "orangutans", "monkeys"))
  • 这通过引用工作,但对表的其他列(链接)有意想不到的影响:setattr(mydt$value,"levels",c(...))

接受的答案使用:=符号提供了一种没有副作用的方法.

该问题的背景是需要重新排序Plotly中的条形图,该条形图规定了重新排序因子水平(链接).


原始问题

我需要重新排序数据表框架中列的因子级别,我想以原生数据表的方式进行,如果有的话.我知道我可以用数据帧方式来做,但这需要硬编码的列名.我想使用动态列名,如果可能的话,通过引用更新.我找到了一种通过引用(链接)重新排序列的方法,但它不会相应地重新排序其他列,也不能使用动态列引用.

我有以下数据(人均二氧化碳排放量):

library(data.table)
print(data)
        indicator        country year     value
1: EN.ATM.CO2E.PC         Canada 2011 15.639760
2: EN.ATM.CO2E.PC          China 2011  7.241515
3: EN.ATM.CO2E.PC European Union 2011  7.079374
4: EN.ATM.CO2E.PC          India 2011  1.476686
5: EN.ATM.CO2E.PC   Saudi Arabia 2011 17.702307
6: EN.ATM.CO2E.PC  United States 2011 16.972417

class(data)
[1] "data.table" "data.frame"

print(str(lapply(data, class)))
List of 8
 $ indicator     : chr …
Run Code Online (Sandbox Code Playgroud)

r plotly data.table

4
推荐指数
1
解决办法
2850
查看次数

标签 统计

data.table ×1

plotly ×1

r ×1