[英]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.