我有不同类型变量的数据。有些是字符,有些是因数,有些是数字,如下所示:
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_acrossin计算每个观察值的缺失值数量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?