如果 R 中的 Column == NA,则删除整行

Remove entire Row if Column == NA in R

正在尝试删除此行但无法获取。我已经在 SO 上尝试了多个问答,但似乎没有任何效果。尝试按照某人的建议使用 sjmisc 库,但它仍然存在。这是我在下面尝试过的内容和 df.

的片段

编辑:

下面是一个DataFrame来测试。删除了不正确且不正确的数据框图片。

df<-data.frame(name=c('CAREY.PRICE',NA,'JOHN.SMITH'),GA=c(3,2,2),SV=c(2,2,NA),stringsAsFactors = FALSE)

哪个会 return:

name       |  GA  | SV
CAREY.PRICE|  3   | 2
NA         |  2   | 2
John.Smith |  2   | NA 

以下响应的问题:

df = df[complete.cases(df),]

从技术上回答了上面的问题,如果任何行中的列有NA,则将其删除。我应该澄清一下,我希望它成为我选择的专栏,即 df$name.

中的 NA

这样做的目的是删除 NAJohn.Smith。这导致我的脚本出现问题,并且我的 DF 中缺少 name(players)。

我的脚本中也有 na.omit(),它也删除了 NA 和 John.Smith。 我的 DF 中有 40 个变量,写出每个可能有或没有 NA 的可能变量太多了。我的临时解决方案是将所有 NA 更改为 0:

df[is.na(df)] <- 0

RETURNS:

name       |  GA  | SV
CAREY.PRICE|  3   | 2
0          |  2   | 2
John.Smith |  2   | 0

然后删除任何 df$name 即 0:

df<-df[!(df$name==0),]

我在找什么:

name       |  GA  | SV
CAREY.PRICE|  3   | 2
John.Smith |  2   | 0

complete. cases 查找没有任何 NA 的行。

因此,您问题的答案是:

df = df[complete.cases(df),]

这是一种在 name 字段中使用 NA 过滤行的方法:

library(dplyr)
df %>% filter(!is.na(name))

#>          name GA SV
#> 1 CAREY.PRICE  3  2
#> 2  JOHN.SMITH  2 NA