查找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的非缺失值个数,请将以下代码添加到上述代码片段中:
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
广告