仅对某些列进行水平合并
Merge horizontally only for certain columns flextable
我有以下 table:
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")
我把它变成了 flextable 像这样:
tmp %>% regulartable()
现在我试图仅在 SOC
和 Adverse Event
列中水平合并匹配值。
我试过使用 merge_h()
但这并没有给我 select 某些列的选项,所以如果有重复的值,它也会合并所有其他列。
我试过 merge_at()
但如果所有 i
和 j
值都不连续,它就不起作用,而我的不会。
有谁知道只使 merge_h()
应用于某些列的方法吗?或者任何其他实现我所追求的方式?
编辑:我正在尝试制作一个看起来有点像这样的 flextable,但没有合并任何数字列。正如您在右下角看到的,所有 1 都已合并。我只想合并前两列,以便创建缩进效果。
您可以创建一个 for 循环遍历有问题的行,然后只合并前两列:
lines <- c(1, 5, 7, 10)
for (ll in lines){
tmp <- merge_at(i = ll, j = 1:2, part = "body")
}
可能不是最优雅的,但它会满足你的需要
我有以下 table:
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")
我把它变成了 flextable 像这样:
tmp %>% regulartable()
现在我试图仅在 SOC
和 Adverse Event
列中水平合并匹配值。
我试过使用 merge_h()
但这并没有给我 select 某些列的选项,所以如果有重复的值,它也会合并所有其他列。
我试过 merge_at()
但如果所有 i
和 j
值都不连续,它就不起作用,而我的不会。
有谁知道只使 merge_h()
应用于某些列的方法吗?或者任何其他实现我所追求的方式?
编辑:我正在尝试制作一个看起来有点像这样的 flextable,但没有合并任何数字列。正如您在右下角看到的,所有 1 都已合并。我只想合并前两列,以便创建缩进效果。
您可以创建一个 for 循环遍历有问题的行,然后只合并前两列:
lines <- c(1, 5, 7, 10)
for (ll in lines){
tmp <- merge_at(i = ll, j = 1:2, part = "body")
}
可能不是最优雅的,但它会满足你的需要