Выбираем в R строки с одинаковыми индексами из data.table

Это техническая заметка-напоминалка о некоторых возможностях пакета data.table.

Задача

Есть несколько таблиц data.table с данными. Назовем их dt_meta, dt_x, dt_y, dt_area.

В каждой таблице есть колонка the_index.

Из таблицы dt_meta выбираю строки, удовлетворяющие критерию. Например, все строки, в которых значение the_length > 120:

dt_meta[the_length > 120]

Задача заключается в том, чтобы из остальных таблиц выбрать строки с теми же номерами.

Решение

Использую специальный символ .I

.I возвращает номера строк. Но у него есть особенности.


Код

dt_meta[the_length > 120, .I]

вернет последовательные номера строк в новой таблице: 1, 2, 3, ....


Код

dt_meta[, .I[the_length > 120]]

вернет номера строк в исходной таблице: 5, 9, 13, 63, ....


Для решения нужен второй вариант кода. Вот решение.

# Номера строк исходной таблицы, в которых the_length > 120
indexes <- dt_meta[, .I[the_length > 120]]
# Выбираю такие же строки из других таблиц
new_x <- dt_x[indexes]
new_y <- dt_y[indexes]
new_area <- dt_area[indexes]
Поделиться
Отправить
 24   6 мес   data.table   R   программирование
Популярное