找出每个 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

以上是 找出每个 R 数据帧组中非缺失值的数量。 的全部内容, 来源链接: utcz.com/z/358510.html

回到顶部