Извлечь строки на основе двух столбцов
У меня есть фрейм данных о ловушках для птиц с двумя интересующими столбцами: 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.