修复删除 R 中的行(删除一列中具有特定负值的行)

Fix remove Rows in R (remove rows with specific negative value in one column)

我有 6 列的数据集。第一列是数据。第 4 列是 "scPM25"。后一列的值为 0、-1、-2 或 NA。

我必须删除值为 -2 的行。应保留带有 0、-1 或 NA 的行!

当我在 R 中尝试各种代码时,我总是得到一个完整的 NA 数据集。我尝试的所有代码都惨遭失败。

一些失败的例子:

所有 return 完整的 NA 集。

sds3 <- sds[sds$scPM25 >= -1.9, ]

sds5 <-过滤器(sds, scPM25 != -2)

sds6 <-过滤器(sds,scPM25!=“-2”)

您可以使用 is.na 并将您的条件与 |(或)组合成子集,例如:

x  <- data.frame(a=1:4, b=c(0,-1,-2,NA))

x[is.na(x$b) | x$b != -2,]
#  a  b
#1 1  0
#2 2 -1
#4 4 NA

subset(x, is.na(b) | b != -2)
#1 1  0
#2 2 -1
#4 4 NA

#Or as @Cath suggested
subset(x, !b %in% (-2))
#  a  b
#1 1  0
#2 2 -1
#4 4 NA

举个例子:

data <- c('John Doe','Peter Gynn','Jolie Hope', 'Freddie Mercury', 'Bob Dylan')
col2 <- c(21000, 23400, 26800, 27000, 39000)
col3 <- as.Date(c('2010-11-1','2008-3-25','2007-3-14','2007-3-14','2007-3-14'))
scPM25 <- c(-1, -2, NA, 0, -2)

sds <- data.frame(data, col2, col3, scPM25)

sds2 <- sds[is.na(sds$scPM25) | sds$scPM25 != -2, ]