Подтвердить что ты не робот

Как извлечь подмножество кадра данных на основе состояния, связанного с полем?

У меня есть большой CSV с результатами медицинского обследования из разных мест (расположение является фактором, присутствующим в данных). Поскольку некоторые анализы специфичны для местоположения и для удобства, я хотел бы извлечь подкадры со строками только из этих местоположений. Бывает, что местоположение - это самое первое поле, поэтому да, я мог бы это сделать, отсортировав строки CSV, но я хотел бы узнать, как это сделать в R, поскольку я уверен, что мне понадобится это для других столбцов.

Итак, в двух словах, вопрос заключается в следующем: с учетом фрейма данных foo, как я могу создать другую панель фрейма данных, которая содержит только строки из foo, где foo $location = 'there??

Большое спасибо.

4b9b3361

Ответ 1

Вот два основных подхода. Я предпочитаю это для его удобочитаемости:

bar <- subset(foo, location == "there")

Обратите внимание, что вы можете сгруппировать множество условных обозначений с помощью & и | для создания сложных подмножеств.

Второй - это метод индексирования. Вы можете индексировать строки в R с помощью числовых или булевых фрагментов. foo$location == "there" возвращает вектор значений T и F, которые имеют ту же длину, что и строки foo. Вы можете сделать это, чтобы возвращать только строки, где условие возвращает true.

foo[foo$location == "there", ]

Ответ 2

Просто чтобы расширить ответ выше, вы также можете индексировать столбцы, а не указывать имена столбцов, что также может быть полезно в зависимости от того, что вы делаете. Учитывая, что ваше местоположение является первым полем, оно будет выглядеть так:

    bar <- foo[foo[ ,1] == "there", ]

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

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

    foo[foo[ ,c(1:N)], ]

Или конкретные столбцы, как и следовало ожидать.

    foo[foo[ ,c(1,5,9)], ]