我有这样的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值变量。
答案 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