Ответ 1
Цитата из документации, как видно, из FAQ 1.12. В чем разница между X [Y] и слиянием (X, Y). Вы нашли следующее в ?data.table
и это помогает?
roll
Применяется к последнему столбцу объединения, обычно к дате, но может быть любым упорядоченная переменная, нерегулярная и включая пробелы. Если roll = TRUE и я строка соответствует всем, кроме последнего столбца соединения x, и его значение в последний столбец присоединяется к пробелу (в том числе после последнего наблюдение в x для этой группы), то преобладающее значение в x равно свернул вперед. Эта операция особенно быстро используется с измененным двоичный поиск. Операция также известна как последнее наблюдение вперед (LOCF). Как правило, не должно быть дубликатов в ключе x, последний ключевой столбец - дата (или время, или дата-время) и все столбцы к ключу x присоединены к. Общей идиомой является выбор одновременные регулярные временные ряды (dts) по набору идентификаторов (ids): DT [CJ (ids, dts), roll = TRUE], где DT имеет ключ с двумя столбцами (id, date) и CJ означает перекрестное соединение.
rolltolast
Как и roll, но данные не перекатываются вперед наблюдения в каждой группе, определяемой столбцами объединения. Значение of я должен упасть в промежутке в x, но не после окончания данных, для эта группа определена всем, кроме последнего столбца объединения. рулон и rolltolast не может быть ИСТИНЫ.
В терминах левых/правых аналогов SQL-соединений я предпочитаю думать об этом в контексте часто задаваемых вопросов 2.14 Можете ли вы объяснить, почему data.table вдохновляется синтаксисом A [B] в базе. Это довольно длинный ответ, поэтому я не буду вставлять его здесь.