概要还表示来港同时使用na.omit和complete.cases后(summary still s

2019-10-19 10:35发布

我是用研究生R和一直在阅读关于去除含有NA从dataframes行其他堆栈溢出的答案。 我曾经尝试都na.omit和complete.cases。 当同时使用这表明,随着NA行已被删除,但是当我写总结(data.frame)仍然包含在NAS。 用Na2SO4行实际删除或者我这样做不对?

na.omit(Perios)
summary(Perios)

Perios[complete.cases(Perios),]
summary(Perios)

Answer 1:

  1. 该错误是,你居然没有输出从分配na.omit

    Perios < - na.omit(Perios)

  2. 如果你知道发生在哪一列在NAS,那么你可以这样做

    Perios [!is.na(Perios $骨膜炎)]

或者更一般地说:

Perios[!is.na(Perios$colA) & !is.na(Perios$colD) & ... ,]

然后与R一般的安全提示,扔在一个na.fail断言它的工作:

na.fail(Perios)  # trust, but verify! Die Paranoia ist gesund.


Answer 2:

is.na是不正确的功能。 你想complete.cases ,你想complete.cases这是等效function(x) apply(is.na(x), 1, all)na.omit来过滤数据:

也就是说,你想那里有没有都行NA值。

< x <- data.frame(a=c(1,2,NA), b=c(3,NA,NA))
> x
   a  b
1  1  3
2  2 NA
3 NA NA

> x[complete.cases(x),]
  a b
1 1 3

> na.omit(x)
  a b
1 1 3

那么这个被分配回x来保存数据。

complete.cases返回一个向量,每输入数据帧的行的一个元素。 在另一方面, is.na返回一个矩阵。 这是不适合返回完整的情况下,但可以返回所有非NA值向量:

> is.na(x)
         a     b
[1,] FALSE FALSE
[2,] FALSE  TRUE
[3,]  TRUE  TRUE


> x[!is.na(x)]
[1] 1 2 3


文章来源: summary still shows NAs after using both na.omit and complete.cases
标签: r summary na