Извлечь строки на основе двух столбцов

У меня есть фрейм данных о ловушках для птиц с двумя интересующими столбцами: Set.Code и Status. Set.Code является буквенно-цифровым значением. Статус либо 1,2, либо 3.

введите описание изображения здесь

Мне нужно попросить R извлечь все строки, которые имеют статус 2, И все строки, которые имеют тот же Set.Code, что и строка, которая имеет статус 2. Так что в приведенном выше примере я бы искал две первые строки, поскольку первая строка имеет статус 2, а вторая строка имеет тот же Set.Code, что и строка с состоянием 2.

Я попытался извлечь все 2 состояния, затем получить все эти установленные коды, а затем извлечь все эти установленные коды из кадра данных:

Где мой dataframe это данные:

Captures <- data[data$Status==2,]

Codes <- unique(Captures$Set.Code)

data[data$Set.Code==Codes,]

но это не сработало.

1 ответ

Вы можете использовать dplyr для этой задачи, где я копировал ту же структуру, которую вы использовали, до последней строки, где я сохранил отфильтрованные наблюдения в новый data.frame. (Вы можете просто сделать так, чтобы R показывал вам результаты).

rm(list = ls())
options(scipen=999)
library("plyr")
library(dplyr)

Здесь я настроил образец data.frame.

num <- 1:4
char <- c("A","A","B","C")
ab <- data.frame(num,char)

Вот код, который я скопировал у вас:

Captures <-ab[(ab$num==2),]
Codes <- unique(Captures$char)

Здесь используется dplyr.

new.ab <- dplyr::filter(ab, num == 2 | char %in% Codes)

Вы должны проверить это руководство для получения дополнительных команд из библиотеки dplyr.

Другие вопросы по тегам