如果数据框中存在缺失值,则汇总 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