使用 dplyr 过滤特定案例

Filter a specific case using 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]))

试试这个:

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

! 表示 NOT - 否定结果。

zx8754回答的不错。我只是添加一个可能的 data.table 解决方案,它既快速(二进制连接)又允许您避免指定列名,如果你想对相同的列进行不同的子集操作(<- 将保留钥匙)

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