При использовании flextable в R, как добавить вертикальную черту между ячейками, если обе используются в слиянии - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь использовать две переменные для группировки данных: Country и State_Province.Я хочу использовать 'flextable' в R, чтобы сделать это, и я также хочу, чтобы две переменные были рядом друг с другом в итоговой таблице, разделенной вертикальной чертой.

Однако использование merge_v избавляет от вертикальной черты, и я не могу понять, как добавить ее обратно.

Вот небольшой воспроизводимый пример:

library(flextable)
library(dplyr)
big_border = fp_border(color="#2c3a51" , width = 2)
std_border = fp_border(color="#2c3a51" , width = 1)

df <- data.frame(Country = c("US", "US", "US", "Canada", "Canada", "Canada"), 
                 State_Province = c("CA", "CA", "NY", "Quebec", "Quebec", "Alberta"), 
                 data = LETTERS[1:6])

df %>% 
  flextable()  %>% 
  vline( border = std_border, part = "all" ) %>% 
  border_outer(part="all", border = big_border ) %>% 
  merge_v(j = c("Country", "State_Province") )  

Flextable with vertical bar missing between two groups used to merge cell

Вместо этого я добавил серператор и удалил его перед презентациями.

myft <- df %>% 
  flextable(., col_keys = c("Country", "separator", "State_Province", "data")) 
myft <- border(myft, j = ~ separator, border = fp_border(width=0), part = "all")
myft <- width(myft, j = ~ separator, width = 0)


myft %>% 
  merge_v(j = c("Country") )  %>% 
  vline( border = std_border, part = "all" ) %>% 
  border_outer(part="all", border = big_border ) %>% 
  merge_v(j = c("State_Province") )  

enter image description here

...