Объединять по горизонтали только для определенных столбцов - PullRequest
0 голосов
/ 14 декабря 2018

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

 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(), но это не дает мне возможности выбрать определенные столбцы, поэтому он объединяет все остальные столбцы, если есть дублированные значения.

Iпытался merge_at(), но он не работает, если все значения i и j не являются последовательными, что не будет моим.

Кто-нибудь знает способ сделать только merge_h()применить к определенным столбцам?Или какой-то другой способ добиться того, что мне нужно?

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

enter image description here

1 Ответ

0 голосов
/ 27 декабря 2018

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

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

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

...