[英]How to drop rows containing NA in specified columns?
我有一個這樣的 dataframe
dep_delay temp humid wind_dir precip pressure date
16983 3 68.00 53.06 NA 0 1020.8 2013-05-07
26477 42 NA 64.93 360 0 NA 2013-03-07
...
29299 -1 NA NA NA NA NA 2013-12-31
29300 33 NA NA NA NA NA 2013-12-31
我只想刪除像 29299 和 29300 這樣的行,它們包含從溫度到壓力的 5 個NA
(這些是連續的列),並保留像 16983 和 26477 這樣的行。
期望的結果:
dep_delay temp humid wind_dir precip pressure date
16983 3 68.00 53.06 NA 0 1020.8 2013-05-07
26477 42 NA 64.93 360 0 NA 2013-03-07
換句話說,問題是如何只刪除連續至少有 5 個NA
的行。
顯然這不是正確的方法:
df <- df[!is.na(df$temp:df$pressure),]
根據 Yacine Jajji 評論更新。
您可以在dplyr
package 中使用標准filter
function。您設置的列數永遠不應為NA
。 在您的情況下有2
: dep_delay
和date
。 然后計算每行中的NA
數量,如果數字等於5
,則該行將被過濾掉。 請參閱下面的代碼:
df <- read.table( text = "dep_delay temp humid wind_dir precip pressure date
16983 3 68.00 53.06 NA 0 1020.8 2013-05-07
26477 42 NA 64.93 360 0 NA 2013-03-07
29299 -1 NA NA NA NA NA 2013-12-31
29300 33 NA NA NA NA NA 2013-12-31")
library(dplyr)
cols_to_remove <- c("temp", "humid", "wind_dir", "precip", "pressure")
df[rowSums(is.na(df[, cols_to_remove])) !=
ncol(df[, cols_to_remove]), ]
Output:
dep_delay temp humid wind_dir precip pressure date
16983 3 68 53.06 NA 0 1020.8 2013-05-07
26477 42 NA 64.93 360 0 NA 2013-03-07
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.