如何重新排序 r 包 gt 中的行标签?
How can I reorder row labels in the r package gt?
我正在尝试重新排序 gt
table 中的 row labels 但是,出于某种原因,我正在使用的 forcats
函数似乎正在被 gt
忽略。这是一个可重现的例子来说明我的意思:
(1) 这是仅使用变量 group
、char
和 currency
:
library(gt)
library(tidyverse)
exibble %>%
select(group, char, currency) %>%
gt(groupname_col = 'group',
rowname_col = 'char')
生成的照片 table:
(2) 假设我希望能够对行标签重新排序,以便 char
在每组中从最大到最小的水果排序。它最终应该看起来像这样:
理想照片table:
(3) 所以我重新调整了 char
并希望 table 中的行标签以新顺序显示:
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
的字母顺序。知道为什么会发生这种情况以及如何重新排列行标签吗?
结果 table 的照片(与第一个 table 相同):
我在 macOS Catalina 10.15.6 上使用 R
4.0.2、dplyr
1.0.2、forcats
0.5.0 和 gt
0.2.2 .
我是 R 和堆栈溢出的新手,因此欢迎任何关于如何更好地表达问题的建设性反馈,我们将不胜感激。谢谢!
如果您想知道,我通过创建矢量在 (2) 中创建了理想的 table。但是,这种方法并不理想,因为它效率低且容易出错。
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')
刚刚 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')
我正在尝试重新排序 gt
table 中的 row labels 但是,出于某种原因,我正在使用的 forcats
函数似乎正在被 gt
忽略。这是一个可重现的例子来说明我的意思:
(1) 这是仅使用变量 group
、char
和 currency
:
library(gt)
library(tidyverse)
exibble %>%
select(group, char, currency) %>%
gt(groupname_col = 'group',
rowname_col = 'char')
生成的照片 table:
(2) 假设我希望能够对行标签重新排序,以便 char
在每组中从最大到最小的水果排序。它最终应该看起来像这样:
理想照片table:
(3) 所以我重新调整了 char
并希望 table 中的行标签以新顺序显示:
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
的字母顺序。知道为什么会发生这种情况以及如何重新排列行标签吗?
结果 table 的照片(与第一个 table 相同):
我在 macOS Catalina 10.15.6 上使用 R
4.0.2、dplyr
1.0.2、forcats
0.5.0 和 gt
0.2.2 .
我是 R 和堆栈溢出的新手,因此欢迎任何关于如何更好地表达问题的建设性反馈,我们将不胜感激。谢谢!
如果您想知道,我通过创建矢量在 (2) 中创建了理想的 table。但是,这种方法并不理想,因为它效率低且容易出错。
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')
刚刚 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')