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