У меня есть вопрос о слиянии двух data.tables.До сих пор я не мог найти никакого решения здесь на стеке потока или где-либо еще.Поэтому здесь вопрос:
Задача: я хочу объединить две таблицы данных на основе столбца даты (date_dawn).Как видите, в таблице A есть повторяющиеся даты, поскольку я получаю даты из нескольких временных отметок в течение одного дня (ts.x).Таблица B имеет одну дату в день (date_dawn) и несколько столбцов, которые мне нужно прикрепить к таблице A.
Сообщение об ошибке, которое я получаю при использовании слияния:
Error in vecseq(f__, len__, if (allow.cartesian || notjoin || !anyDuplicated(f__, :
Join results in 1469574 rows; more than 588399 = nrow(x)+nrow(i). Check for
duplicate key values in i each of which join to the same group in x over and
over again. If that's ok, try by=.EACHI to run j for each group to avoid the
large allocation. If you are sure you wish to proceed, rerun with
allow.cartesian=TRUE. Otherwise, please search for this error message in the
FAQ, Wiki, Stack Overflow and data.table issue tracker for advice.
Пример таблицы A
date_dawn ts.x ....
1: 2015-09-22 2015-09-22 15:15:00
2: 2015-09-22 2015-09-22 15:20:00
3: 2015-09-23 2015-09-23 15:25:00
4: 2015-09-23 2015-09-23 15:30:00
5: 2015-09-23 2015-09-23 15:35:00
6: 2015-09-24 2015-09-24 15:40:00
Пример таблицы B
date_dawn ts_ss ....
1: 2015-09-22 2015-09-22 16:58:26
2: 2015-09-23 2015-09-23 16:56:09
3: 2015-09-24 2015-09-24 16:53:51
4: 2015-09-25 2015-09-25 16:51:33
5: 2015-09-26 2015-09-26 16:49:16
6: 2015-09-27 2015-09-27 16:46:59
Желаемый результат будет:
date_dawn ts.x ts_ss ....
1: 2015-09-22 2015-09-22 15:15:00 2015-09-22 16:58:26
2: 2015-09-22 2015-09-22 15:20:00 2015-09-22 16:58:26
3: 2015-09-23 2015-09-23 15:25:00 2015-09-23 16:56:09
4: 2015-09-23 2015-09-23 15:30:00 2015-09-23 16:56:09
5: 2015-09-23 2015-09-23 15:35:00 2015-09-23 16:56:09
6: 2015-09-24 2015-09-24 15:40:00 2015-09-24 16:53:51
Проблема до сих пор заключалась в том, что любое другое «решение» (как вфункция left_join, или при использовании allow.cartesian = T в функции слияния, как предполагалось в приведенном выше сообщении об ошибке), использовала все виды комбинаций совпадений между x и y.Но я хочу, чтобы только строки таблицы B с определенным date_dawn записывались в строки таблицы A с соответствующим date_dawn.
Спасибо за любые предложения
РЕШЕНИЕ:
Проблема была в том, что я получил дубликаты в обеих таблицах.Поэтому мне пришлось либо объединить на основе нескольких столбцов, либо убедиться, что в одной из таблиц нет дубликатов.Таким образом, было возможно объединиться, не получив все возможные комбинации между дубликатами в Таблице A и B. Извините, если я вызвал путаницу, и спасибо сообществу за поддержку.