查詢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的非缺失值個數,請將以下程式碼新增到上述程式碼片段中:

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

更新於:2021年11月8日

201 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

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