如何在 R 中求出两个因子列之和?

r programmingserver side programmingprogramming

要求出两个因子列之和,我们可以使用聚合函数。这在我们有两个因子的频率/计数数据时最需要。例如,如果我们有一个名为 df 的数据框,其中包含两个因子列(即 f1 和 f2)和一个数值列(即 Count),则可以使用命令聚合(Count~f1+f2,data=df,sum)计算 Count 与 f1 和 f2 之和。

示例

考虑下面的数据框 −

x1<-sample(LETTERS[1:4],20,replace=TRUE)
x2<-sample(letters[1:2],20,replace=TRUE)
freq<-rpois(20,5)
df1<-data.frame(x1,x2,freq)
df1

输出

   x1 x2 freq
1  D  b   4
2  C  b   6
3  C  b   7
4  A  b   4
5  C  b   4
6  C  a   6
7  C  b   2
8  C  a   7
9  D  b   4
10 D  b   7
11 B  a   3
12 B  a   6
13 A  a   5
14 B  b   5
15 C  a   2
16 B  a   5
17 A  b   6
18 B  a   8
19 C  a   2
20 D  a   5

根据 x1 和 x2 的组合求频率之和 −

示例

aggregate(freq~x1+x2,data=df1,sum)

输出

  x1  x2 freq
1  A  a   5
2  B  a  22
3  C  a  17
4  D  a   5
5  A  b  10
6  B  b   5
7  C  b  19
8  D  b  15

示例

y1<-sample(c("hot","cold"),20,replace=TRUE)
y2<-sample(c("Asia","America","Africa","Europe"),20,replace=TRUE)
count<-sample(1:10,20,replace=TRUE)
df2<-data.frame(y1,y2,count)
df2

输出

   y1       y2    count
1  hot    Africa    8
2  cold   America   8
3  hot    America   4
4  hot    Africa    5
5  hot   America    3
6  hot   Europe     9
7  cold  Asia      10
8  hot   America    4
9  hot   America    6
10 cold   Africa    5
11 cold  America    5
12 cold  America   10
13 cold  Africa     3
14 cold  America    5
15 hot   Asia       9
16 cold  Asia       4
17 cold  America    6
18 cold  Europe     4
19 cold  Africa     9
20 hot   Africa     8

根据 y1 和 y2 的组合计算计数总和 −

示例

aggregate(count~y1+y2,data=df2,sum)

输出

    y1    y2     count
1  cold  Africa   17
2  hot   Africa   21
3  cold  America  34
4  hot   America  17
5  cold  Asia     14
6  hot   Asia      9
7  cold  Europe    4
8  hot   Europe    9

相关文章