计算至少有一个值的行数

时间:2019-09-04 04:42:50

标签: r dplyr

我有这样的df:

a   b   c   d
1   1   1   1
2   2   3   NA
3   NA  NA  2 
4   NA  2   NA
5   NA  NA  NA

是否可以计算出在所有变量中没有不丢失值的行数,因此例如在这里它将返回4,因为其余部分在某些变量上至少有一个none NA值变量。

1 个答案:

答案 0 :(得分:0)

由于现在很明显,我们希望从计算中忽略列a。这里有几种方法:

使用rowSums

sum(rowSums(!is.na(df[-1])) > 0)
#[1] 4

#OR

sum(rowSums(is.na(df[-1])) != (ncol(df) - 1))

使用apply

sum(apply(!is.na(df[-1]), 1, any))

#OR

sum(!apply(is.na(df[-1]), 1, all))

使用filter_at中的dplyr根据条件过滤行,但是我们可以使用nrow来获得满足我们要求的行数。

library(dplyr)
df %>%  filter_at(-1, any_vars(!is.na(.))) %>% nrow