[英]summary still shows NAs after using both na.omit and complete.cases
我是一名使用 R 的研究生,並且一直在閱讀有關從數據幀中刪除包含 NA 的行的其他 Stack Overflow 答案。 我試過 na.omit 和 complete.cases。 當兩者都使用時,它顯示帶有 NA 的行已被刪除,但是當我編寫 summary(data.frame) 時,它仍然包含 NA。 實際刪除了 NA 的行還是我做錯了?
na.omit(Perios)
summary(Perios)
Perios[complete.cases(Perios),]
summary(Perios)
錯誤是您實際上沒有從na.omit
分配輸出!
Perios <- na.omit(Perios)
如果你知道 NAs 出現在哪一列,那么你可以做
Perios[!is.na(Perios$Periostitis),]
或更一般地說:
Perios[!is.na(Perios$colA) & !is.na(Perios$colD) & ... ,]
然后作為 R 的一般安全提示,輸入 na.fail 以斷言它有效:
na.fail(Perios) # trust, but verify! Die Paranoia ist gesund.
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.