2015-04-30 7 views
1

Скажем, у меня есть следующие общие данныефильтр конкретный случай использования dplyr

A <- c(1,1,1,1,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5) 
B <- c(1,1,2,1,2,1,2,3,2,3,3,4,4,3,2,3,3,4,4,5,4,4,5,5,5) 
C <- c(1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0) 
Data <- data.frame(A,B,C) 

Потом создайте следующий Подсолнечное сюжет

библиотека (зоопарк)

Data$F = ifelse(Data$C==1,Data$A,NA) 

Data$F = na.locf(Data$F) 

Data$G = ifelse(Data$C==1,NA,Data$B) 

sunflowerplot(Data$G ~ Data$F, 
       main = "Flower_plot", 
       xlab = "B value where C==1", 
       ylab = "B value where C==0", 
       size = 0.25, cex.lab = 1.3, mgp = c(2.3,1,0)) 

И когда мы смотрим на сюжет, мы хотим удалить некоторые данные.

Мы хотим убрать, где для C = 1 и B = 3, данные, где C = 0 и B = 4

Я пытался что-то вроде этого

library(dplyr)  
Data_cleaned <- Data %>% 
     group_by(C) %>% 
     filter(rm(B==4[A==3 & C==0])) 
+0

Каков ваш желаемый результат? –

+0

Новый кадр данных, который специально удалил строки с номерами 12 и 13 – lukeg

+0

Почему 'group_by (C)'? – zx8754

ответ

3

Попробуйте это:

Data_cleaned <- Data %>% 
    filter(!(B==4 & A==3 & C==0)) 

!NOT - отрицает результаты.

+0

Спасибо, я не знал! можно использовать функцию – lukeg

3

zx8754 ответ хороший. Я бы просто добавить возможное data.table решения, которое будет как быстро (бинарное соединение) и позволю вам не указывать имена столбцов, если вы хотите сделать различные операции подмножества на тот же столбцы (<- сохранит ключ)

library(data.table) 
setkey(setDT(Data), A, B, C) 
Data[!J(3, 4, 0)] 
Смежные вопросы