Как объединить таблицы по идентификатору, а затем объединить ячейки с одинаковым идентификатором - PullRequest
0 голосов
/ 27 июня 2018

Таблица1:

      ID Sex
1: 12345   M
2: 23456   M
3: 34567   F
4: 45678   F
5: 56789   F

Table2:

      ID  name
1: 12345   sam
2: 23456  jack
3: 23456   tom
4: 56789 steve
5: 56789   rob

Мне нужно объединить эти две таблицы, чтобы получить:

   ID Sex      name
1: 12345   M       sam
2: 23456   M  jack,tom
3: 34567   F          
4: 45678   F          
5: 56789   F steve,rob

Я пытался использовать функцию Join, но она не позволяет мне объединять эти имена, есть ли хороший способ решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Если это data.tables, одним из вариантов будет paste 'имя' по 'ID' во втором наборе данных 'dt2' и соединение с первым ('dt1') в 'ID' и создание имя столбца в первом наборе данных

library(data.table)
dt1[dt2[, .(name = toString(name)), ID], name := name, on = .(ID)]
dt1
#      ID Sex       name
#1: 12345   M        sam
#2: 23456   M  jack, tom
#3: 34567   F       <NA>
#4: 45678   F       <NA>
#5: 56789   F steve, rob
0 голосов
/ 27 июня 2018

Это комбинация из трех отдельных операций, которые были подробно описаны в других ответах на этом сайте:

  1. Вы хотите объединить таблицы :

  2. , затем распространение от длинного к широкому формату

  3. и, наконец, вставьте эти несколько столбцов 'name' вместе в один столбец name

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...