如何在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
广告