删除具有特定值的数据框行

delete row of a dataframe with a specific value

我有一个包含 10 列和超过 10000 行的数据框 (df),我想删除所有包含值 -999 的行,我想这很简单,所以我这样做:

dfnew=df[!rowSums(df ==-999),]

我所有的列都具有相同数量的元素 (10950) 和我的所有行 (10),但是当我 运行 这个我得到错误:

Error in Ops.data.frame(xyz, xyy[!rowSums(xyy == -999), ]) : 
  ‘==’ only defined for equally-sized data frames

这是我的数据框的头部:

3035 1989  4 25  0   32.8   25.8  0  0 26.2   0
3036 1989  4 26  0 -999.0   23.6  0  0  1.0   0
3037 1989  4 27  0   32.4   18.6  0  0  0.0   0
3038 1989  4 28  0   31.8   19.6  0  0  0.0   0
3039 1989  4 29  0   33.2   19.2  0  0  0.0   0
3040 1989  4 30  0   32.4   19.6  0  0  0.0   0
3041 1989  5  1  0   33.0   19.8  0  0  0.0   0
3042 1989  5  2  0   32.6   18.8  0  0  0.0   0
3043 1989  5  3  0   32.8   19.2  0  0  0.0   0
3044 1989  5  4  0 -999.0 -999.0  0  0  1.0   0

求助!

这将过滤包含 -999.

的所有行
library(dplyr)
df %>%
  filter_all(all_vars(. !=-999))

其中df是一个数据框。确保行中没有 NA,否则将 filter_all 更改为 filter_all(all_vars(. !=-999 | is.na(.)))