查詢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

更新於:2021年11月3日

211 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.