Объединить по горизонтали только для определенных столбцов с возможностью изменения текста

У меня есть следующая таблица:

 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() только к определенным столбцам? Или любой другой способ достичь того, что мне нужно?

РЕДАКТИРОВАТЬ: я пытаюсь создать флештабируемый файл, который выглядит примерно так, но без объединения числовых столбцов. Как вы можете видеть в правом нижнем углу, все единицы были объединены. Я просто хочу, чтобы первые два столбца слились, чтобы я мог создать эффект отступа.

введите здесь описание изображения


person morgan121    schedule 14.12.2018    source источник


Ответы (1)


Вы можете создать цикл for, проходящий по рассматриваемым строкам, а затем объединить только первые два столбца:

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

Может быть, не самый элегантный, но он сделает то, что вам нужно

person morgan121    schedule 27.12.2018
comment
Спасибо, я, наверное, этим воспользуюсь. Хотелось бы, чтобы не было хорошего встроенного образа :) - person morgan121; 27.12.2018