2016-05-19 5 views
0

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

enter image description here

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

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

Где мой dataframe - данные:

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

Codes <- unique(Captures$Set.Code) 

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

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

+3

изменить '== 'в последней строке на'% в% 'должна работать? – Psidom

+0

Можете ли вы указать, с какой ошибкой вы столкнулись? Я воспроизвел ваш набор данных и запустил ваш код, и он возвращает мне две строки с set.Codes «M1». –

ответ

0

Вы можете использовать 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) 

Вы должны проверить это руководство для more commands from the dplyr library.

Смежные вопросы