查找 R 数据框中每组中非缺失值的数量。
r programmingserver side programmingprogramming更新于 2025/4/8 23:07:17
要查找 R 数据框中每组中非缺失值的数量,我们可以将数据框转换为 data.table 对象,然后使用 sum 函数对 is.na 取反。
例如,如果我们有一个名为 df 的数据框,其中包含一个分组列 Group 和一个包含少量 NA 的数值列 Num,那么我们可以使用下面给出的命令查找每个组中非缺失值的数量。 −
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