Извлеките подмножество данных DataFrame на основе условия, связанного с полем

StackOverflow https://stackoverflow.com/questions/3445590

  •  27-09-2019
  •  | 
  •  

Вопрос

У меня большой 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)], ]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top