仅针对可伸缩的某些列水平合并

时间:2018-12-14 02:57:04

标签: r flextable

我有下表:

 tmp <- structure(list(SOC = c("Blood", "", "", "Gast", "", "", "", "Skin", 
                  "", "", "Adverse Event"), `Adverse Event` = c("Blood", "Raised Alt", "Raised Ast", 
                  "Gast", "Bloating", "Diarrhoia", "Vomiting", "Skin", "Reddness", 
                  "Rash", "Any Adverse Event"), C11 = c("", "0", "0", "", "0", 
                  "2", "0", "", "0", "0", "2"), C21 = c("", "0", "0", "", "1", 
                  "0", "1", "", "1", "0", "3"), T1 = c("", "0", "0", "", "1", "2", 
                  "1", "", "1", "0", "3"), C12 = c("", "1", "0", "", "0", "0", 
                  "0", "", "0", "1", "2"), C22 = c("", "0", "0", "", "0", "0", 
                  "1", "", "0", "0", "1"), T2 = c("", "1", "0", "", "0", "0", "1", 
                  "", "0", "1", "2"), C23 = c("", "0", "1", "", "0", "0", "0", 
                  "", "0", "0", "1"), T3 = c("", "0", "1", "", "0", "0", "0", "", 
                  "0", "0", "1"), C14 = c("", "1", "0", "", "0", "0", "0", "", 
                  "0", "0", "1"), T4 = c("", "1", "0", "", "0", "0", "0", "", "0", 
                  "0", "1")), row.names = c(NA, 11L), class = "data.frame")

我已经将它变成了这样的柔性表:

 tmp %>% regulartable()

现在,我尝试仅在SOCAdverse Event列中水平合并匹配值。

我尝试使用merge_h(),但这并没有给我选择某些列的选项,因此如果值重复,它也会合并所有其他列。

我尝试过merge_at(),但是如果所有ij的值都不是连续的,那是行不通的。

有人知道只将merge_h()应用于某些列的方法吗?或以其他方式实现我的追求?

编辑:我正在尝试制作一个看起来像这样的flextable,但是没有任何数字列被合并。正如您在右下角看到的,所有1都已合并。我只希望将前两列合并,以便创建缩进效果。

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以在有问题的行上创建for循环,然后仅合并前两列:

lines <- c(1, 5, 7, 10)
for (ll in lines){
  tmp <- merge_at(i = ll, j = 1:2, part = "body")
}

可能不是最优雅的,但是它将满足您的需求