如果R中存在缺失值,如何根据两组找到值的总和?

如果存在缺失值,要根据两组找到值的总和,我们可以使用 group_by 和 dplyr 包的汇总函数。

例如,如果我们有一个名为 df 的数据框,其中包含一个数字列,例如 Num 和两个分组列,例如 Grp1 和 Grp2,那么如果 df 中存在缺失值,则可以通过以下方式找到基于 Grp1 和 Grp2 的 Num 中的值的总和使用下面提到的命令 -

df%>%group_by(Grp1,Grp2)%>%summarise(Sum=sum(Num,na.rm=TRUE))

示例 1

以下代码段创建了一个示例数据框 -

grp1<-sample(LETTERS[1:3],20,replace=TRUE)

grp2<-sample(letters[1:3],20,replace=TRUE)

Dep_Var<-sample(c(NA,rpois(2,5)),20,replace=TRUE)

df1<-data.frame(grp1,grp2,Dep_Var)

df1

输出结果

创建以下数据框 -

   grp1 grp2 Dep_Var

1   A    a    4

2   A    c   NA

3   C    a    5

4   A    c   NA

5   A    b   NA

6   A    a    4

7   C    c    5

8   B    b    4

9   C    a   NA

10  A    c    5

11  B    a   NA

12  B    c    5

13  A    c   NA

14  C    c    4

15  C    c    5

16  A    a   NA

17  C    b    4

18  A    a    4

19  B    a    4

20  B    a   NA

要加载 dplyr 包并根据 grp1 和 grp2 在 Dep_Var 中找到值的总和,请将以下代码添加到上述代码段中 -

library(dplyr)

df1%>%group_by(grp1,grp2)%>%summarise(Sum=sum(Dep_Var,na.rm=TRUE))

`summarise()` regrouping Output by 'grp1' (override with `.groups` argument)

# A tibble: 9 x 3

# Groups: grp1 [3]

输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

grp1 grp2 Sum

 <chr> <chr> <int>

1  A   a    12

2  A   b     0

3  A   c     5

4  B   a     4

5  B   b     4

6  B   c     5

7  C   a     5

8  C   b     4

9  C   c    14

示例 2

以下代码段创建了一个示例数据框 -

Class<-sample(c("First","Second","Third"),20,replace=TRUE)

Rank<-sample(1:4,20,replace=TRUE)

Score<-sample(1:100,20)

df2<-data.frame(Class,Rank,Score)

df2

输出结果

创建以下数据框 -

  Class   Rank Score

1  Second  4   100

2  First   4    76

3  First   2    54

4  Third   3    66

5  Third   2    98

6  Second  1    81

7  First   3    95

8  Second  1     7

9  Third   3    94

10 Second  1    78

11 Third   3    13

12 Third   2    19

13 Second  4    30

14 First   4    31

15 Second  3    87

16 First   3    38

17 First   1    60

18 First   3    36

19 Second  4     3

20 Third   3    84

要根据 Class 和 Rank 在 Score 中查找值的总和,请将以下代码添加到上面的代码段中 -

df2%>%group_by(Class,Rank)%>%summarise(Sum=sum(Score,na.rm=TRUE))

`summarise()` regrouping输出结果by 'Class' (override with `.groups` argument)

# A tibble: 9 x 3

# Groups: Class [3]

输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

  Class  Rank   Sum

  <chr>  <int> <int>

1  First   1   60

2  First   2   54

3  First   3  169

4  First   4  107

5  Second  1  166

6  Second  3   87

7  Second  4  133

8  Third   2  117

9  Third   3  257

以上是 如果R中存在缺失值,如何根据两组找到值的总和? 的全部内容, 来源链接: utcz.com/z/338643.html

回到顶部