1

我有一个看起来像这样的组数据集:

1   Groupname

11  Subgroupname
111 Subsubgroupname1
112 Subsubgroupname2

12  Subgroupname
121 Subsubgroupname
122 Subsubgroupname


2   Groupname

21  Subgroupname
211 Subsubgroupname1
212 Subsubgroupname2

22  Subgroupname
221 Subsubgroupname
222 Subsubgroupname

理想情况下,我想将 reactable 与 groupBy 一起使用,这样一开始,只显示具有单个数字(范围从 1 到 9)的大组,但是当您展开它时,您会看到两位数的子组,并且然后您可以展开每个子组以显示具有三位数字的“子子组”。

我已经尝试使用可反应的嵌套表函数/详细信息选项,但列/内容没有像我想要的那样对齐(https://glin.github.io/reactable/articles/examples.html#nested -tables-1 )

但是,当我使用 groupBy 选项(https://glin.github.io/reactable/articles/examples.html#grouping-and-aggregation-1)时,组和子组的名称不会显示在可扩展行中我会期待的。我相信我必须通过 JS 指定一个自定义聚合函数,但我真的不需要聚合任何东西——如果你愿意的话,我的日期已经聚合了,我只想要一种特定的方式来显示它。

到目前为止,这是我的代码(以及数据文件的链接:https ://www.dropbox.com/s/yisn36ekchyeogs/cno11_estructura.xls?dl=0 )

rm(list = ls())

library(dplyr)
library(readxl)
library(reactable)

setwd(dirname(rstudioapi::getActiveDocumentContext()$path))  # Set working directory 


#Reads data, cleans it ----
ocup  <- readxl::read_excel("cno11_estructura.xls",
                                 col_names = F,
                                 sheet     = 1,
                                 range     = "A1:B761")

colnames(ocup) <- c("codigo_ocup", "nombre_ocup")

cod1d <- as.character(0:9)
            
ocup <- ocup %>%
          filter(nchar(codigo_ocup) != 1 | codigo_ocup %in% cod1d) %>%
          filter(nchar(codigo_ocup) <  4) %>%
          mutate(digitos = case_when(nchar(codigo_ocup) == 1 ~ 1,
                                     nchar(codigo_ocup) == 2 ~ 2,
                                     nchar(codigo_ocup) == 3 ~ 3)
                 )

ocup1d <- ocup[ocup$digitos==1,c("codigo_ocup", "nombre_ocup")]
ocup2d <- ocup[ocup$digitos==2,c("codigo_ocup", "nombre_ocup")]
ocup3d <- ocup[ocup$digitos==3,c("codigo_ocup", "nombre_ocup")]

# Attempt using nested tables works but columns are not nicely aligned 
reactable(ocup1d, details = function(index) {
  ocup2d_temp <- ocup2d[substr(ocup2d$codigo_ocup,1,1) == ocup1d$codigo_ocup[index], ]
  htmltools::div(style = "padding: 16px",
                 reactable(ocup2d_temp, details = function(index) {
                   ocup3d_temp <- ocup3d[substr(ocup3d$codigo_ocup,1,2) == ocup2d$codigo_ocup[index], ]
                   htmltools::div(style = "padding: 16px",
                                  reactable(ocup3d_temp, outlined = F)
                   )
                 })
  )
})


#Attempt using groupBy does not show "title" of the group properly
ocup$digitos <- NULL
ocup$codigo_ocup_1d <- substr(ocup$codigo_ocup,1,1)
ocup$codigo_ocup_2d <- substr(ocup$codigo_ocup,1,2)

reactable(ocup,
          groupBy = c("codigo_ocup_1d", "codigo_ocup_2d")
          )

我有没有机会获得嵌套表的正确扩展行为以及 groupBy 选项的正确列对齐?提前谢谢了!

4

0 回答 0