Dataframe 统计数据帧中每列的非NA值数
我有一个包含大量NAs和一些非Na值的大数据集。 目前,我计算每列的非NA值,如下所示:Dataframe 统计数据帧中每列的非NA值数,dataframe,datatable,Dataframe,Datatable,我有一个包含大量NAs和一些非Na值的大数据集。 目前,我计算每列的非NA值,如下所示: attach(df) 1000 - (sum(is.na(X1))) 1000 - (sum(is.na(X2))) 1000 - (sum(is.na(X3))) 1000 - (sum(is.na(X4))) 1000 - (sum(is.na(X5))) ... detach(df) X1 Amount of Non-Na-Values X2 ... X3
attach(df)
1000 - (sum(is.na(X1)))
1000 - (sum(is.na(X2)))
1000 - (sum(is.na(X3)))
1000 - (sum(is.na(X4)))
1000 - (sum(is.na(X5)))
...
detach(df)
X1 Amount of Non-Na-Values
X2 ...
X3 ...
X4
X5
X6
因此,我观察的总长度——我的NA值的总和
是否有一种更快的方法可以使用更少的代码行和键入工作,并让我快速查看所有非NA值的列和数量
像for循环之类的
我在找这样的东西:
attach(df)
1000 - (sum(is.na(X1)))
1000 - (sum(is.na(X2)))
1000 - (sum(is.na(X3)))
1000 - (sum(is.na(X4)))
1000 - (sum(is.na(X5)))
...
detach(df)
X1 Amount of Non-Na-Values
X2 ...
X3 ...
X4
X5
X6
谢谢:试试这个:
nonNA_counts <- sapply(df, function(x) sum(!is.na(x)))
对于dplyr,这将是:
library(dplyr)
df %>%
summarise_all(funs(sum(!is.na(.)))
这种方法的优点是,您可以使用group_by before,并且您不需要关心列名,它只是汇总了所有列名。您还可以在整个数据帧上调用is.na,隐式强制转换为逻辑矩阵,并在反向响应上调用colSums:
制作样本数据
第47集
df“数据帧”:100 obs。共有5个变量:
>$V1:int NA 1NA 1NA 1NA。。。
>$V2:int不适用不适用1不适用10不适用。。。
>$V3:int 1 10 1不适用1不适用1不适用。。。
>$V4:int不适用于0不适用于0不适用于1不适用于。。。
>$V5:int不适用不适用不适用不适用0 0不适用不适用不适用。。。
科尔萨姆!是nadf吗
>V1 V2 V3 V4 V5
> 69 55 62 60 70
对于数据帧上的colwise操作,不是applydf,2,functionx sum!.nax是否更一致?@MikaelPoulJohannesson通常,我们应用于矩阵,在数据帧上使用sapply或lappy。在这种情况下,这没什么大不了的…不要使用附加,会导致比它解决的问题更多的问题。很容易产生bug。如果对数据进行任何子集、分组或重新排列,则附加的列可能彼此不同步,并且与实际数据不同步。还有更好的选择:许多函数都有一个数据参数,所以您根本不需要它,您可以将其用于其他任何事情。看到和