Извлеките подмножество данных DataFrame на основе условия, связанного с полем
Вопрос
У меня большой CSV с результатами медицинского осмотра из разных местоположений (расположение - это фактор, присутствующий в данных). Поскольку некоторые анализы специфичны для определения местоположения и для удобства, я хотел бы извлечь подкары с рядами только из этих мест. Это происходит, что местоположение - самое первое поле, так что да, я мог бы сделать это, сортировав строки CSV, но я хотел бы узнать, как это сделать в R, как я уверен, мне понадобится это для других колонн.
Итак, в двух словах: вопрос: дан кадр данных FOO, как я могу создать еще одну панель кадров данных, которая содержит только строки из Foo, где foo$location = 'there'
?
Решение
Вот два основных подхода. Я предпочитаю это для его читабельности:
bar <- subset(foo, location == "there")
Обратите внимание, что вы можете строгать много условных условий &
а также |
создать сложные подмножества.
Второй - подход индексации. Вы можете индексировать строки в R с числовыми или логическими ломтиками. foo$location == "there"
возвращает вектор T
а также F
значения, которые та же длина, что и строки foo
. Отказ Вы можете сделать это, чтобы вернуть только строки, где условие возвращает TRUE.
foo[foo$location == "there", ]
Другие советы
Просто чтобы продлить ответ выше, вы также можете индексировать свои столбцы, а не указаны имена столбцов, которые также могут быть полезны в зависимости от того, что вы делаете. Учитывая, что ваше местоположение - первое поле, которое будет выглядеть так:
bar <- foo[foo[ ,1] == "there", ]
Это полезно, потому что вы можете выполнять операции в вашем значении столбца, например, как зацикливание по определенным столбцам (и вы можете сделать то же самое, также и индексируя номера строк).
Это также полезно, если вам нужно выполнить некоторую работу в более чем на одном столбце, потому что вы можете указать диапазон столбцов:
foo[foo[ ,c(1:N)], ]
Или определенные столбцы, как вы ожидаете.
foo[foo[ ,c(1,5,9)], ]