我有不同类型变量的数据。有些是字符,有些是因数,有些是数字,如下所示:
df <- data.frame(a = c("tt", "ss", "ss", NA), b=c(2,3,NA,1), c=c(1,2,NA, NA), d=c("tt", "ss", "ss", NA))
我正在尝试使用c_across
in计算每个观察值的缺失值数量dplyr
但是,c_across
似乎无法组合不同类型的值,如下面的错误消息所示
df %>%
rowwise() %>%
summarise(NAs = sum(is.na(c_across())))
错误:
summarise()
输入有问题NAs
。x 不能组合a
<因子> 和b
. ℹ 输入NAs
是sum(is.na(c_across()))
。ℹ 错误发生在第 1 行。
事实上,如果我只包含数字变量,它就可以工作。
df %>%
rowwise() %>%
summarise(NAs = sum(is.na(c_across(b:c))))
如果我只包含字符变量,同样的事情
df %>%
rowwise() %>%
summarise(NAs = sum(is.na(c_across(c(a,d)))))
我可以不使用下面的方法来解决这个问题c_across
,但是我有很多变量,所以它不是很实用。
df %>%
rowwise() %>%
summarise(NAs = is.na(a)+is.na(b)+is.na(c)+is.na(d))
我可以使用传统apply
方法,如下所示,但我想使用dplyr
.
apply(df, 1, function(x)sum(is.na(x)))
关于如何计算缺失值数量、逐行、高效和使用的任何建议dplyr
?