使用dplyr过滤特定案例

时间:2015-04-30 08:49:46

标签: r 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]))

2 个答案:

答案 0 :(得分:3)

试试这个:

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

!表示NOT - 否定结果。

答案 1 :(得分:3)

zx8754回答很好。我只是添加一个可能data.table的快速解决方案(二进制连接),并且如果要在相同的列上执行不同的子集操作,将允许您避免指定列名称(<-将保留关键)

library(data.table)
setkey(setDT(Data), A, B, C)
Data[!J(3, 4, 0)]