如何在R的data.table物件中查詢具有相同名稱的列的每行總和?


為了在R的data.table物件中查詢具有相同名稱的列的每行總和,我們可以按照以下步驟操作:

  • 首先,建立一個包含一些具有相同名稱的列的data.table。

  • 然後,使用tapply以及colnames和sum函式來查詢具有相同名稱的列的每行總和。

示例

建立data.table

讓我們建立一個如下所示的data.table:

library(data.table)
DT<-
data.table(x=rpois(25,5),y=rpois(25,10),x=rpois(25,5),y=rpois(25,2),check.names=FALSE)
DT

輸出

執行上述指令碼後,將生成以下輸出(由於隨機化,此輸出在您的系統上可能會有所不同):

    x  y  x y
1:  5 13  8 4
2:  1 12  1 4
3:  3 12  7 2
4:  5 12  4 1
5:  3 12  6 4
6:  9  7  5 3
7:  5 10  7 3
8:  4 11  4 1
9:  3 12  3 3
10: 8 11  5 0
11: 3  9  6 3
12: 5 14  3 2
13: 6 10  5 0
14: 4 12 10 3
15: 4  9  4 1
16: 9  7  1 1
17: 5 13  7 2
18: 4  8  3 0
19: 5 16  1 5
20: 5 14  4 1
21: 5 11 11 1
22: 4  5  3 2
23: 6 11  4 2
24: 7  5  5 2
25: 9 18  4 0
    x  y  x y

查詢具有相同名稱的列的每行總和

使用tapply以及colnames和sum函式來查詢data.table物件DT中具有相同名稱的列的每行總和:

library(data.table)
DT<-
data.table(x=rpois(25,5),y=rpois(25,10),x=rpois(25,5),y=rpois(25,2),check.names=FALSE)
t(apply(DT,1, function(x) tapply(x,colnames(DT),sum)))

輸出

       x y
[1,]  13 17
[2,]   2 16
[3,]  10 14
[4,]   9 13
[5,]   9 16
[6,]  14 10
[7,]  12 13
[8,]   8 12
[9,]   6 15
[10,] 13 11
[11,]  9 12
[12,]  8 16
[13,] 11 10
[14,] 14 15
[15,]  8 10
[16,] 10  8
[17,] 12 15
[18,]  7  8
[19,]  6 21
[20,]  9 15
[21,] 16 12
[22,]  7  7
[23,] 10 13
[24,] 12  7
[25,] 13 18

更新於: 2021年11月16日

139 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.