有条件地删除 R 中的行

问题描述

数据框:

A ; B
x   1
x   7
y   2
y   3
z   9
z   1

我想删除 A=x 和 A=z 的所有行,因为 x 和 z 在 B 列中的值为 1。因此,数据框必须如下所示:

A ; B
y   2
y   3

谢谢,

解决方法

你可以试试subset

> subset(df,! A %in% c("x","z"))
  A B
3 y 0
4 y 0

数据

> dput(df)
structure(list(A = c("x","x","y","z","z"),B = c(1L,0L,1L)),class = "data.frame",row.names = c(NA,-6L))
,
my.data.frame <- subset(data,A != "x" | A != "z")

顺便说一句,How to combine multiple conditions to subset a data-frame using "OR"? 的副本

,

data.table 方法

library( data.table )
DT <- fread("A  B
x   1
x   7
y   2
y   3
z   9
z   1")


DT[ copy(DT)[,temp := sum(B == 1),by = A ]$temp == 0,]

#    A B
# 1: y 2
# 2: y 3