如何在openxlsx2的数据透视表中自定义行排序?
解决openxlsx2透视表行排序不符合预期的问题
问题核心在于:R中的因子水平不会被Excel透视表识别,Excel默认会按文本的字母顺序对透视表行字段排序,因此你通过fct_relevel设置的因子顺序无法生效。
直接解决方案:使用row_order参数指定排序
在wb_add_pivot_table()中添加row_order参数,直接传入你需要的行顺序即可:
library(tibble) library(forcats) library(openxlsx2) tbl_1 <- tibble( var_1 = c("FEBRERO", "SEPTIEMBRE","AGOSTO", "SEPTIEMBRE", "AGOSTO", "FEBRERO", "DICIEMBRE", "DICIEMBRE"), var_2 = seq_along(var_1) ) wb_1 <- wb_workbook() |> wb_add_worksheet() |> wb_add_data(x = tbl_1) wb_1 |> wb_add_pivot_table( x = tbl_1, # 直接使用原数据,无需通过wb_data读取 rows = "var_1", data = "var_2", fun = "sum", row_order = c("FEBRERO", "AGOSTO", "SEPTIEMBRE", "DICIEMBRE") # 明确指定行排序顺序 ) |> wb_save("example_1.xlsx")
原理说明
row_order是openxlsx2专门为透视表提供的参数,它会直接告诉Excel按你指定的顺序排列行字段,绕过Excel默认的字母排序逻辑,比依赖R因子水平的方式更直接可靠。
内容的提问来源于stack exchange,提问作者Amarullazo
相关产品推荐
相关产品推荐

