Как удалить столбец из таблицы r
Перейти к содержимому

Как удалить столбец из таблицы r

Удалить весь столбец из data.frame в R

Кто-нибудь знает, как удалить весь столбец из data.frame в R? Например, если мне дадут этот data.frame:

И я хочу удалить вторую колонку.

6 ответов

Вы можете установить его на NULL .

Как указано в комментариях, вот некоторые другие возможности:

Вы можете удалить несколько столбцов с помощью:

Однако будьте осторожны с подмножеством матриц, так как вы можете получить вектор:

С его помощью вы можете удалить column и сохранить variable в другом variable .

Есть несколько вариантов удаления одного или нескольких столбцов с помощью dplyr::select() и некоторых вспомогательных функций. Вспомогательные функции могут быть полезны, потому что некоторые из них не требуют именования всех определенных столбцов, которые нужно удалить. Обратите внимание, что для удаления столбцов с помощью select() вам необходимо использовать начальный — , чтобы инвертировать имена столбцов.

Использование примеров данных dplyr::starwars для некоторого разнообразия имен столбцов:

Вы также можете перейти по номеру столбца:

Опубликованные ответы очень хороши при работе с data.frame . Однако эти задачи могут быть довольно неэффективными с точки зрения памяти. При больших объемах данных удаление столбца может занять необычно много времени и / или выйти из строя из-за ошибок out of memory . Пакет data.table помогает решить эту проблему с помощью оператора := :

Я должен собрать более крупный пример, чтобы показать различия. Я обновлю этот ответ в какой-то момент.

(Для полноты) Если вы хотите удалить столбцы по имени, вы можете сделать это:

Включение drop = F гарантирует, что результатом все равно будет data.frame , даже если останется только один столбец.

Чтобы удалить один или несколько столбцов по имени, когда имена столбцов известны (а не во время выполнения), мне нравится синтаксис subset() . Например. для фрейма данных

Чтобы удалить только столбец a , вы могли бы сделать

И чтобы удалить столбцы b и d , вы могли бы сделать

Вы можете удалить все столбцы между d и b с помощью:

Как я сказал выше, этот синтаксис работает только тогда, когда известны имена столбцов. Это не сработает, если, скажем, имена столбцов определены программно (т.е. присвоены переменной). Я воспроизведу это предупреждение из документации ?subset :

Предупреждение:

Это удобная функция, предназначенная для интерактивного использования. Для программирования лучше использовать стандартные функции подмножества, такие как ‘[‘, и, в частности, нестандартная оценка аргумента ‘подмножество’ может иметь непредвиденные последствия.

Удалить весь столбец из data.frame в R

Кто-нибудь знает, как удалить весь столбец из data.frame в R? Например, если мне дают эти data.frame:

и я хочу удалить 2-й столбец.

Вы можете установить его на NULL .

Как указано в комментариях, вот еще несколько возможностей:

Вы можете удалить несколько столбцов с помощью:

Будьте осторожны с подмножеством матриц, поскольку вы можете получить вектор:

Чтобы удалить один или несколько столбцов по имени, когда имена столбцов известны (в отличие от определения во время выполнения), мне нравится subset() синтаксис. Например, для фрейма данных

удалить только a столбец, который вы могли бы сделать

и удалить b и d столбцы , которые вы могли бы сделать

Вы можете удалить все столбцы между d и b с:

Как я уже говорил выше, этот синтаксис работает только тогда, когда известны имена столбцов. Это не будет работать, когда, скажем, имена столбцов определяются программно (то есть присваиваются переменной). Я воспроизведу это предупреждение из ?subset документации:

Предупреждение:

Это удобная функция, предназначенная для интерактивного использования. Для программирования лучше использовать стандартные функции поднабора, такие как ‘[‘, и, в частности, нестандартная оценка аргумента ‘подмножество’ может иметь непредвиденные последствия.

Удаление нескольких столбцов из R data.table с параметром для удаляемых столбцов

Я пытаюсь манипулировать рядом data.tables аналогичным образом и хотел бы написать функцию для этого. Я хотел бы передать параметр, содержащий список столбцов, в которых будут выполняться операции. Это прекрасно работает, когда векторное объявление столбцов находится в левой части оператора :=, но не в том случае, если оно объявлено ранее (или передано в функцию). Следующий код показывает проблему.

Ошибка: «Добавление нового столбца« colsToDelete », затем присвоение NULL (удаление его)». Так ясно, что он интерпретирует «colsToDelete» как новое имя столбца.

Та же проблема возникает при выполнении чего-либо в этом направлении

Я новичок в R, но у меня больше опыта работы с некоторыми другими языками, так что это может быть глупый вопрос.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *