查找R数据框中每一行的非NA值频率。
为了查找R数据框中每一行的非NA值频率,我们可以使用`apply`函数和`na.omit`函数。
例如,如果我们有一个包含一些NA值的数据框`df`,我们可以使用如下命令查找`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
广告