在 R 資料框中按組查詢每列中非缺失值的個數。
要查詢 R 資料框中按組對每列中非缺失值的個數,我們可以使用 dplyr 包的 summarise_each 函式以及 is.na 函式的否定形式。
例如,如果我們有一個名為 df 的資料框,其中包含一個分組列,例如 G,以及一些其他包含一些 NA 的列,那麼我們可以使用以下命令在分組列 G 中查詢每列中非缺失值的個數:
df%%group_by(G)%%summarise_each(funs(sum(!is.na(.))))
示例 1
以下程式碼片段建立了一個示例資料框:
Group<-sample(LETTERS[1:4],20,replace=TRUE) x1<-sample(c(NA,1,2),20,replace=TRUE) x2<-sample(c(NA,round(rnorm(3),2)),20,replace=TRUE) df1<-data.frame(Group,x1,x2) df1
建立了以下資料框
Group x1 x2 1 C 2 -0.49 2 B 1 1.86 3 A NA NA 4 A NA NA 5 D 1 1.12 6 A NA 1.12 7 B 1 1.86 8 C 1 -0.49 9 D 2 NA 10 A NA 1.12 11 A NA 1.12 12 C NA 1.86 13 A 2 -0.49 14 A 1 -0.49 15 C NA NA 16 C NA 1.86 17 A NA 1.12 18 D 2 -0.49 19 C 2 1.86 20 C 2 NA
要載入 dplyr 包並在上面建立的資料框 df1 中按 Group 列查詢每列中非缺失值的個數,請將以下程式碼新增到上述程式碼片段中:
Group<-sample(LETTERS[1:4],20,replace=TRUE) x1<-sample(c(NA,1,2),20,replace=TRUE) x2<-sample(c(NA,round(rnorm(3),2)),20,replace=TRUE) df1<-data.frame(Group,x1,x2) library(dplyr) df1%%group_by(Group)%%summarise_each(funs(sum(!is.na(.)))) # A tibble: 4 x 3
輸出
如果您將以上所有程式碼片段作為一個程式執行,它將生成以下輸出:
Group x1 x2 <chr <int <int 1 A 2 6 2 B 2 2 3 C 4 5 4 D 3 2
示例 2
以下程式碼片段建立了一個示例資料框:
Class<-sample(c("I","II","III"),20,replace=TRUE)
Score<-sample(c(NA,1:5),20,replace=TRUE)
Rank<-sample(c(NA,0:2),20,replace=TRUE)
df2<-data.frame(Class,Score,Rank)
df2建立了以下資料框
Class Score Rank 1 II NA NA 2 III 5 2 3 II 5 2 4 II 4 NA 5 II NA NA 6 II 4 2 7 II 2 1 8 III 4 2 9 II 2 NA 10 III NA 0 11 I 1 2 12 II NA NA 13 I 2 1 14 I 5 NA 15 I 3 0 16 I 4 0 17 I 3 2 18 II 2 NA 19 II 2 NA 20 II 2 1
要查詢上面建立的資料框 df2 中按 Class 列查詢每列中非缺失值的個數,請將以下程式碼新增到上述程式碼片段中:
Class<-sample(c("I","II","III"),20,replace=TRUE)
Score<-sample(c(NA,1:5),20,replace=TRUE)
Rank<-sample(c(NA,0:2),20,replace=TRUE)
df2<-data.frame(Class,Score,Rank)
df2%%group_by(Class)%%summarise_each(funs(sum(!is.na(.))))
# A tibble: 3 x 3輸出
如果您將以上所有程式碼片段作為一個程式執行,它將生成以下輸出:
Class Score Rank <chr <int <int 1 I 6 5 2 II 8 4 3 III 2 3
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP