我有下表:
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()
现在,我尝试仅在SOC
和Adverse Event
列中水平合并匹配值。
我尝试使用merge_h()
,但这并没有给我选择某些列的选项,因此如果值重复,它也会合并所有其他列。
我尝试过merge_at()
,但是如果所有i
和j
的值都不是连续的,那是行不通的。
有人知道只将merge_h()
应用于某些列的方法吗?或以其他方式实现我的追求?
编辑:我正在尝试制作一个看起来像这样的flextable,但是没有任何数字列被合并。正如您在右下角看到的,所有1都已合并。我只希望将前两列合并,以便创建缩进效果。
答案 0 :(得分:1)
您可以在有问题的行上创建for循环,然后仅合并前两列:
lines <- c(1, 5, 7, 10)
for (ll in lines){
tmp <- merge_at(i = ll, j = 1:2, part = "body")
}
可能不是最优雅的,但是它将满足您的需求