如果 R 資料框中存在缺失值,則按組對 R 資料框列進行彙總。
如果 R 資料框中存在缺失值,可以使用 dplyr 包的 summarise_each 函式找到列值的總和,其中我們可以透過將 na.rm 引數設定為 TRUE 來刪除缺失值。
由於資料框中將存在分組,因此同一個包的 group_by 函式將幫助 summarise_each 函式按組執行求和。檢視下面的示例以瞭解其工作原理。
示例 1
以下程式碼片段建立了一個示例資料框 -
Grp<-sample(c("I","II","III"),20,replace=TRUE)
Rate<-sample(c(NA,2,4),20,replace=TRUE)
df1<-data.frame(Grp,Rate)
df1建立了以下資料框
Grp Rate 1 II 2 2 I 4 3 II NA 4 II 4 5 II 2 6 I NA 7 III 2 8 III 4 9 I NA 10 I 4 11 III 4 12 II 4 13 II NA 14 I 4 15 III 4 16 III 4 17 III 2 18 II NA 19 III 2 20 III 2
要載入 dplyr 包並在 df1 中彙總列以找到總和(忽略上述建立的資料框中缺失的值),請將以下程式碼新增到上述程式碼片段中 -
Grp<-sample(c("I","II","III"),20,replace=TRUE)
Rate<-sample(c(NA,2,4),20,replace=TRUE)
df1<-data.frame(Grp,Rate)
library(dplyr)
df1%%group_by(Grp)%%summarise_each(funs(sum(.,na.rm=TRUE)))
# A tibble: 3 x 2輸出
如果將所有上述程式碼片段作為一個程式執行,則會生成以下輸出 -
Grp Rate <chr <dbl 1 I 12 2 II 12 3 III 24
示例 2
以下程式碼片段建立了一個示例資料框 -
Class<-sample(c("First","Second","Third"),20,replace=TRUE)
Price<-sample(c(NA,1.25,2.75),20,replace=TRUE)
df2<-data.frame(Class,Price)
df2建立了以下資料框
Class Price 1 Third 1.25 2 First NA 3 Third 1.25 4 Third 2.75 5 Second NA 6 Second 1.25 7 Second 1.25 8 Third NA 9 First 2.75 10 Second NA 11 Second NA 12 Second NA 13 Third NA 14 Third NA 15 Third NA 16 Third 2.75 17 First 2.75 18 Third NA 19 Third 1.25 20 Third NA
要彙總 df2 中的列以找到總和(忽略上述建立的資料框中缺失的值),請將以下程式碼新增到上述程式碼片段中 -
Class<-sample(c("First","Second","Third"),20,replace=TRUE)
Price<-sample(c(NA,1.25,2.75),20,replace=TRUE)
df2<-data.frame(Class,Price)
df2%%group_by(Class)%%summarise_each(funs(sum(.,na.rm=TRUE)))
# A tibble: 3 x 2輸出
如果將所有上述程式碼片段作為一個程式執行,則會生成以下輸出 -
Class Price <chr <dbl 1 First 5.5 2 Second 2.5 3 Third 9.25
示例 3
以下程式碼片段建立了一個示例資料框 -
Category<-sample(c("Small","Medium","Large"),20,replace=TRUE)
Quantity<-sample(c(NA,500,1000),20,replace=TRUE)
df3<-data.frame(Category,Quantity)
df3建立了以下資料框
Category Quantity 1 Large 1000 2 Small 1000 3 Small 500 4 Large 500 5 Small 1000 6 Medium NA 7 Small 500 8 Medium 500 9 Large NA 10 Medium 500 11 Medium NA 12 Large NA 13 Small 500 14 Medium 1000 15 Large NA 16 Medium 500 17 Small 500 18 Medium NA 19 Small NA 20 Medium 1000
要彙總 df3 中的列以找到總和(忽略上述建立的資料框中缺失的值),請將以下程式碼新增到上述程式碼片段中 -
Category<-sample(c("Small","Medium","Large"),20,replace=TRUE)
Quantity<-sample(c(NA,500,1000),20,replace=TRUE)
df3<-data.frame(Category,Quantity)
df3%%group_by(Category)%%summarise_each(funs(sum(.,na.rm=TRUE)))
# A tibble: 3 x 2輸出
如果將所有上述程式碼片段作為一個程式執行,則會生成以下輸出 -
Category Quantity <chr <dbl 1 Large 1500 2 Medium 3500 3 Small 4000
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP