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

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.