R flextable垂直合并以另一列为条件

R flextable vertical merge conditional on another column

在下面的示例中,我想垂直合并第 1 列中的类似值,然后垂直合并第 2 列中的类似值,条件是它们在第 1 列中位于同一组中。现在它目前合并“G2” v1 中的组“a”和“b”,这不是我想要的。有没有办法使用内置的 flextable 函数或类似的方法来实现这一点?

library(flextable)

dat <- data.frame(v1 = c(rep("a", 3), rep("b", 3), rep("c", 3)),
                  v2 = c("G1", "G1", "G2", "G2", "G3", "G3", "G4", "G5", "G6"),
                  v3 = c(1:9), stringsAsFactors = FALSE)

ft <- regulartable(dat)
ft <- merge_v(ft,j=c(1:2))

我会为此创建一个变量(并使用它但不显示它):

library(flextable)

dat <- data.frame(v1 = c(rep("a", 3), rep("b", 3), rep("c", 3)),
                  v2 = c("G1", "G1", "G2", "G2", "G3", "G3", "G4", "G5", "G6"),
                  v3 = c(1:9), 
                  stringsAsFactors = FALSE)
dat$v_dummy <- paste0(dat$v1, dat$v2)
ft <- flextable(dat, col_keys = c("v1", "v2", "v3"))
ft <- theme_box(ft)
ft <- merge_v(ft, j = c("v1", "v_dummy"), target = c("v1", "v2"))
ft