找出每个 R 数据帧组中非缺失值的数量。
为了找到R数据帧的每组中非缺失值的数量,我们可以将数据帧转换为data.table对象,然后使用sum函数对is.na取反。
例如,如果我们有一个名为df的数据框,其中包含一个分组列(例如Group)和一个数值列(NA很少,例如Num),那么我们可以使用以下给定的命令找到每个Group中非缺失值的数量-
setDT(df)[,sum(!is.na(df)),by=.(Group)]
示例1
以下代码段创建了一个示例数据框-
Grp<-sample(LETTERS[1:3],20,replace=TRUE) Dep_Var<-sample(c(NA,round(rnorm(2),2),20,replace=TRUE)) df1<-data.frame(Grp,Dep_Var) df1
创建了以下数据框
Grp Dep_Var 1 B NA 2 A 1.00 3 A 20.00 4 B -0.63 5 B -1.48 6 B NA 7 A 1.00 8 C 20.00 9 A -0.63 10 A -1.48 11 C NA 12 C 1.00 13 B 20.00 14 C -0.63 15 B -1.48 16 A NA 17 C 1.00 18 B 20.00 19 A -0.63 20 B -1.48
要加载data.table对象并在上面创建的数据框中的每个Grp中找到非缺失值的数量,请将以下代码添加到上面的代码段中-
Grp<-sample(LETTERS[1:3],20,replace=TRUE) Dep_Var<-sample(c(NA,round(rnorm(2),2),20,replace=TRUE)) df1<-data.frame(Grp,Dep_Var) library(data.table) setDT(df1)[,sum(!is.na(Dep_Var)),by=.(Grp)]输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
Grp V1 1: B 6 2: A 6 3: C 4
示例2
以下代码段创建了一个示例数据框-
Category<-sample(c("Low","Medium","High"),20,replace=TRUE) Val<-sample(c(NA,rpois(2,5),20,replace=TRUE)) df2<-data.frame(Category,Val) df2
创建了以下数据框
Category Val 1 Medium 20 2 High 1 3 High 8 4 High 5 5 High NA 6 Medium 20 7 High 1 8 Low 8 9 Low 5 10 Medium NA 11 Medium 20 12 Medium 1 13 Medium 8 14 Medium 5 15 Medium NA 16 High 20 17 Medium 1 18 Medium 8 19 Low 5 20 Low NA
要在上面创建的数据框中找到每个类别中非缺失值的数量,请将以下代码添加到上面的代码段中-
Category<-sample(c("Low","Medium","High"),20,replace=TRUE) Val<-sample(c(NA,rpois(2,5),20,replace=TRUE)) df2<-data.frame(Category,Val) setDT(df2)[,sum(!is.na(Val)),by=.(Category)]输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
Category V1 1: Medium 8 2: High 5 3: Low 3