在 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 x31 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 y31 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 z31 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