如何在R数据框中,根据分类列值的组合来计算数值列的总和?


为了在R数据框中根据分类列值的组合计算数值列的总和,我们可以按照以下步骤操作:

  • 首先,创建一个数据框。
  • 然后,使用reshape2包中的recast函数和sum函数,根据分类列值的组合计算数值列的总和。

创建数据框

示例

让我们创建一个如下所示的数据框:

 在线演示

> x1<-rpois(20,2)
> x2<-rpois(20,5)
> x3<-rpois(20,1)
> x4<-rpois(20,10)
> f1<-sample(LETTERS[1:3],20,replace=TRUE)
> f2<-sample(letters[1:3],20,replace=TRUE)
> df<-data.frame(x1,x2,x3,x4,f1,f2)
> df

执行上述脚本后,将生成以下输出(由于随机化,此输出可能因您的系统而异):

输出

  x1 x2 x3 x4 f1 f2
1  1  6  0 11  B  c
2  2  3  3 16  B  a
3  4  2  0 13  B  b
4  1  3  0  4  B  c
5  0  4  0 10  A  b
6  1  8  3  8  C  c
7  2  4  0  2  A  c
8  0  1  1 12  A  b
9  3  4  0 15  B  b
10 0  1  1  4  A  a
11 2  8  0  6  C  b
12 1  4  1 13  C  c
13 1  4  1 13  A  b
14 2  6  2 11  A  b
15 3  5  0 10  A  a
16 1  4  0 17  A  c
17 2  4  1  4  B  a
18 1  4  0 11  B  b
19 3  3  1  8  B  c
20 4  6  3  5  A  a

根据分类列值的组合计算数值列的总和

示例

使用recast函数计算df中基于f1和f2的x1、x2、x3和x4列的总和:

 在线演示

> x1<-rpois(20,2)
> x2<-rpois(20,5)
> x3<-rpois(20,1)
> x4<-rpois(20,10)
> f1<-sample(LETTERS[1:3],20,replace=TRUE)
> f2<-sample(letters[1:3],20,replace=TRUE)
> df<-data.frame(x1,x2,x3,x4,f1,f2)
> library(reshape2)
> recast(df,variable~f1+f2,sum)

输出

Using f1, f2 as id variables
  variable A_a A_b A_c B_a B_b B_c C_b C_c
1  x1  7  3  3  4  8  5 2  2
2  x2 12 15  8  7 10 12 8 12
3  x3  4  4  0  4  0  1 0  4
4  x4 19 46 19 20 39 23 6 21

更新于:2021年8月3日

浏览量:118

开启您的职业生涯

完成课程获得认证

开始学习
广告