Объединить две таблицы в R - PullRequest
       16

Объединить две таблицы в R

0 голосов
/ 09 ноября 2018

У меня есть две таблицы с одинаковыми именами столбцов, количеством строк и столбцов:

ID     Q1        Q2
1      aa        bb
2      cc        12
3      q         z


ID     Q1        Q2
1      A         B
2      p         l_
3      23        r

Я бы хотел, чтобы в следующей таблице эти столбцы были объединены как с контекстом, так и через \ n, как здесь:

  ID     Q1        Q2
  1      aa        bb
         A         B
  2      cc        12
         p         l_
  3      q         z
         23        r

Я пробовал, merge, rbind, cbind, но я не получил хороших результатов. Любые иды, как это сделать?

Требуемый результат:
введите описание изображения здесь

1 Ответ

0 голосов
/ 09 ноября 2018

Пример данных:

> d1
  ID Q1 Q2
1  1 aa bb
2  2 cc 12
3  3  q  z
> d2
  ID Q1 Q2
1  1  A  B
2  2  p l_
3  3 23  r

строка-связывания: * +1004 *

> d = rbind(d1, d2)

сортировка по ID:

> d = d[order(d$ID),]

заменить дублированный идентификатор чем-то, например, NA:

> d$ID[duplicated(d$ID)]=NA

работа выполнена:

> d
  ID Q1 Q2
1  1 aa bb
4 NA  A  B
2  2 cc 12
5 NA  p l_
3  3  q  z
6 NA 23  r
> 

Если вы хотите создать объединенные ячейки с \n, разделяющими их, то это:

> cbind(ID=d1$ID, setNames(do.call(cbind.data.frame,lapply(c("Q1","Q2"), function(n){paste(d1[[n]],d2[[n]],sep="\n")})),c("Q1","Q2")))
  ID    Q1     Q2
1  1 aa\nA  bb\nB
2  2 cc\np 12\nl_
3  3 q\n23   z\nr
...