在 R 数据帧的每一行中查找非 NA 值的频率。

要查找 R 数据帧每一行中非 NA 值的频率,我们可以使用 apply 函数和na.omit函数。

例如,如果我们有一个名为 df 的数据框,其中包含一些 NA 值,那么我们可以使用如下命令在 df 的每一行中找到非 NA 值的频率 -

apply(df,1, function(x) length(na.omit(x)))

示例 1

以下代码段创建了一个示例数据框 -

x1<-sample(c(NA,2,5),20,replace=TRUE)

x2<-sample(c(NA,10,15),20,replace=TRUE)

x3<-sample(c(NA,1,3),20,replace=TRUE)

df1<-data.frame(x1,x2,x3)

df1

创建了以下数据框

  x1  x2 x3

1  5  10  3

2  2  10  1

3  2  10 NA

4  2  15  3

5  NA 10  1

6  5  NA NA

7  5  15 NA

8  NA 15  3

9  2  NA NA

10 2  10 NA

11 NA 15 NA

12 5  15  3

13 5  10  3

14 5  NA  3

15 2  NA  1

16 NA 15 NA

17 NA 15 NA

18 2  NA  3

19 2  15  3

20 2  10 NA

要在上面创建的数据框中的 df1 的每一行中找到非 NA 值的频率,请将以下代码添加到上面的代码段中 -

x1<-sample(c(NA,2,5),20,replace=TRUE)

x2<-sample(c(NA,10,15),20,replace=TRUE)

x3<-sample(c(NA,1,3),20,replace=TRUE)

df1<-data.frame(x1,x2,x3)

apply(df1,1, function(x) length(na.omit(x)))

输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

[1] 3 3 2 3 2 1 2 2 1 2 1 3 3 2 2 1 1 2 3 2

示例 2

以下代码段创建了一个示例数据框 -

y1<-sample(c(NA,round(rnorm(3),2)),20,replace=TRUE)

y2<-sample(c(NA,round(rnorm(3,10,2),2)),20,replace=TRUE)

y3<-sample(c(NA,round(rnorm(3,25,3.2),2)),20,replace=TRUE)

df2<-data.frame(y1,y2,y3)

df2

创建了以下数据框

      y1    y2    y3

1   0.27    NA 24.02

2   0.27  9.30 24.02

3   0.49    NA    NA

4     NA  8.10 25.60

5   0.49 11.11 29.34

6  -0.16    NA 25.60

7   0.49  9.30 29.34

8  -0.16  8.10 25.60

9  -0.16 11.11 24.02

10  0.49  8.10 29.34

11    NA 11.11 25.60

12  0.27  9.30 29.34

13 -0.16    NA    NA

14  0.27  8.10 25.60

15    NA  8.10 29.34

16  0.27    NA    NA

17 -0.16  9.30 24.02

18    NA  9.30    NA

19  0.49 11.11 25.60

20  0.49    NA 25.60

要在上面创建的数据框中的 df2 的每一行中找到非 NA 值的频率,请将以下代码添加到上面的代码段中 -

y1<-sample(c(NA,round(rnorm(3),2)),20,replace=TRUE)

y2<-sample(c(NA,round(rnorm(3,10,2),2)),20,replace=TRUE)

y3<-sample(c(NA,round(rnorm(3,25,3.2),2)),20,replace=TRUE)

df2<-data.frame(y1,y2,y3)

apply(df2,1, function(x) length(na.omit(x)))

输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

[1] 2 3 1 2 3 2 3 3 3 3 2 3 1 3 2 1 3 1 3 2

示例 3

以下代码段创建了一个示例数据框 -

z1<-sample(c(NA,runif(2,1,5)),20,replace=TRUE)

z2<-sample(c(NA,runif(2,5,10)),20,replace=TRUE)

z3<-sample(c(NA,runif(3,1,2)),20,replace=TRUE)

df3<-data.frame(z1,z2,z3)

df3

创建了以下数据框

         z1       z2       z3

1  2.237191       NA 1.242077

2  1.137563 8.614818 1.120255

3        NA 9.840686       NA

4  2.237191 9.840686 1.242077

5  1.137563       NA       NA

6        NA 9.840686       NA

7  1.137563       NA 1.242077

8  2.237191 9.840686 1.877137

9  1.137563 8.614818 1.120255

10 2.237191 9.840686       NA

11 1.137563 8.614818 1.877137

12       NA 8.614818 1.877137

13       NA       NA 1.877137

14 1.137563 8.614818       NA

15       NA 9.840686 1.242077

16 1.137563 9.840686 1.877137

17 2.237191 9.840686       NA

18 1.137563 8.614818 1.242077

19       NA 8.614818 1.120255

20 2.237191       NA 1.242077

要在上面创建的数据框中的 df2 的每一行中找到非 NA 值的频率,请将以下代码添加到上面的代码段中 -

z1<-sample(c(NA,runif(2,1,5)),20,replace=TRUE)

z2<-sample(c(NA,runif(2,5,10)),20,replace=TRUE)

z3<-sample(c(NA,runif(3,1,2)),20,replace=TRUE)

df3<-data.frame(z1,z2,z3)

apply(df3,1, function(x) length(na.omit(x)))

输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

[1] 2 3 1 3 1 1 2 3 3 2 3 2 1 2 2 3 2 3 2 2

以上是 在 R 数据帧的每一行中查找非 NA 值的频率。 的全部内容, 来源链接: utcz.com/z/335435.html

回到顶部