使用 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)]
假设我有以下通用数据
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)]