【问题标题】:Merge horizontally only for certain columns flextable仅对某些列进行水平合并
【发布时间】:2018-12-14 02:57:04
【问题描述】:

我有下表:

 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 都已合并。我只想合并前两列,以便创建缩进效果。

【问题讨论】:

    标签: r flextable


    【解决方案1】:

    您可以创建一个循环遍历有问题的行,然后只合并前两列:

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

    可能不是最优雅的,但它会满足你的需要

    【讨论】:

    • 谢谢,我可能最终会使用它。希望有一个不错的内置方式:)
    猜你喜欢
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    • 1970-01-01
    • 2012-11-22
    • 2016-06-27
    相关资源
    最近更新 更多