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

以上是 如果数据框中存在缺失值,则汇总 R 数据框列以按组求和。 的全部内容, 来源链接: utcz.com/z/355711.html

回到顶部