1

我正在尝试重新排序表中的行标签,但由于某种原因,我正在使用gt的函数似乎被. 这是一个可重复的示例来说明我的意思:forcatsgt

(1) 以下是 exibble 数据集(附带gt)的样子,它是一个仅使用变量groupchar的表格currency

library(gt)
library(tidyverse)

exibble %>% 
  select(group, char, currency) %>% 
  gt(groupname_col = 'group',
     rowname_col = 'char')  

结果表的照片:

在此处输入图像描述

(2) 假设我希望能够重新排序行标签,以便char在每组中从最大到最小的水果排序。它最终应该看起来像这样:

理想桌的照片:

在此处输入图像描述

(3) 所以我重新调整char并期望表格中的行标签以这个新顺序显示:

exibble %>% 
  mutate(charOrdered = fct_relevel(char, c('durian', 'coconut', 'banana', 'apricot', 'honeydew', 'grapefruit', 'fig'))) %>% 
  select(group, charOrdered, currency) %>% 
  gt(groupname_col = 'group', 
     rowname_col = 'charOrdered')

但是,好像gt忽略了该forcats函数并保留了新变量的顺序,charOrdered, 字母顺序。知道为什么会发生这种情况以及如何重新排序行标签吗?

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

在此处输入图像描述

我在 macOS Catalina 10.15.6 上使用R4.0.2、1.0.2、0.5.0和0.2.2。dplyrforcatsgt

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


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

exibble %>% 
  mutate(fruit = c('durian', 'coconut', 'banana', 'apricot', 'honeydew', 'grapefruit', 'fig', NA)) %>% 
  mutate(currency = c('65100.000', '1.390', '17.950', '49.950', '0.440', NA, '13.255', '1325.810')) %>% 
  select(group, fruit, currency) %>% 
  gt(groupname_col = 'group', rowname_col = 'fruit') 
4

1 回答 1

0

只需: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')

在此处输入图像描述

于 2020-09-17T17:57:45.273 回答