如果 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