如何重新排序r包gt中的行标签?

问题描述

我正在尝试对gt表中的row labels重新排序,但是由于某种原因,{{1}似乎忽略了我正在使用的forcats函数}。这是一个可复制的示例,以说明我的意思:

(1)以下是仅使用变量gtgtgroup的表的数据集(char附带)的表形式:>

currency

结果表的照片

enter image description here

(2)假设我希望能够对行标签重新排序,以使library(gt) library(tidyverse) exibble %>% select(group,char,currency) %>% gt(groupname_col = 'group',rowname_col = 'char') 从每个组中的最大到最小的水果排序。它应该最终看起来像这样:

理想表的照片:

enter image description here

(3)因此,我重新调整了char的水平,并期望表中的行标签以这种新顺序显示

char

但是,好像exibble %>% mutate(charOrdered = fct_relevel(char,c('durian','coconut','banana','apricot','honeydew','grapefruit','fig'))) %>% select(group,charOrdered,rowname_col = 'charOrdered') 忽略了gt函数并按字母顺序保留了新变量forcats的顺序。知道为什么会发生这种情况以及如何重新排序行标签吗?

结果表的照片(与第一个表相同):

enter image description here

我在macOS Catalina 10.15.6上使用charOrdered 4.0.2,R 1.0.2,dplyr 0.5.0和forcats 0.2.2。

我是R和堆栈溢出的新手,因此欢迎您提供关于如何更好地表达问题的任何建设性反馈,我们将不胜感激。谢谢!


如果您想知道,我通过创建矢量在(2)中创建了理想表。但是,这种方法不理想,因为它效率低下并且容易出错。

gt

解决方法

arrange之前charOrdered

exibble %>% 
  mutate(charOrdered = fct_relevel(char,c('durian','coconut','banana','apricot','honeydew','grapefruit','fig'))) %>% 

  arrange(charOrdered) %>%

  select(group,charOrdered,currency) %>% 
  group_by(group) %>%
  gt(groupname_col = 'group',rowname_col = 'charOrdered')

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...