Получите оставшийся кадр данных после подстановки

#dataframe #select #julia #subset #sample

#фрейм данных #выбирать #Юля #подмножество #образец

Вопрос:

Здесь алфавиты-это идентификаторы.

 data=DataFrame(["A" 2 3 4; "B" 1 2 3;"C" 2 1 2;"D" 2 4 9],:auto)  4 rows × 4 columns x1 x2 x3 x4 Any Any Any Any 1 A 2 3 4 2 B 1 2 3 3 C 2 1 2 4 D 2 4 9  

Предположим, что мои выборочные данные имеют;

 2 rows × 4 columns x1 x2 x3 x4 Any Any Any Any 1 D 2 4 9 2 A 2 3 4  

Я хочу получить оставшиеся данные, которые исключают строки с D и A. Я могу получить его, просто выбрав столбцы 2 и 3. Но мне нужен другой метод для больших наборов данных.

Ответ №1:

Но мне нужен другой метод для больших наборов данных.

Размер набора данных здесь не имеет значения. Если у вас есть какой-либо селектор строк, назовите его rows тем, с помощью которого вы выбирали строки, "D" а "A" затем просто используйте Not(rows) селектор, чтобы выбрать все оставшиеся строки.

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

 data[(!in(Set(["A", "D"]))).(data.x2), :]  

Если вы хотите что-то более простое для понимания, но менее эффективное, вы можете использовать:

 data[[!(v in ["A", "D"]) for v in df.x2], :]  

В качестве дополнительного комментария (поскольку вы хотите работать с большими наборами данных) — более эффективно, чтобы ваши столбцы имели более конкретный тип элемента, чем Any . Вы можете сузить тип столбца, написав data = identity.(data) .

Если что-то из того, что я написал выше, будет непонятно, пожалуйста, попросите в комментарии разъяснений.