如何在 R 中按行中位數劃分 data.table 物件行?


要按行中位數劃分 R 的 data.table 物件的行值,我們可以按照以下步驟操作 -

  • 首先,建立 data.table 物件。
  • 然後,使用 apply 函式按行中位數劃分 data.table 物件的行值。

建立 data.table 物件

讓我們建立一個如下所示的資料框 -

> library(data.table)
> x<-rpois(25,5)
> y<-rpois(25,2)
> z<-rpois(25,10)
> DT<-data.table(x,y,z)
> DT

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

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

按行中位數劃分 data.table 物件的行值

使用 apply 函式按行中位數劃分 DT 的行值 -

> library(data.table)
> x<-rpois(25,5)
> y<-rpois(25,2)
> z<-rpois(25,10)
> DT<-data.table(x,y,z)
> DT_new<-t(apply(DT,1, function(x) x/median(x)))
> DT_new

輸出

x y z
[1,] 1.6666667 1.0000000 0.6666667
[2,] 0.3333333 1.0000000 2.3333333
[3,] 1.0000000 0.0000000 2.1666667
[4,] 1.0000000 0.3333333 1.6666667
[5,] 1.0000000 0.1250000 1.1250000
[6,] 1.0000000 0.1111111 1.1111111
[7,] 1.0000000 0.2500000 2.5000000
[8,] 1.0000000 0.2857143 1.7142857
[9,] 0.6000000 1.0000000 1.6000000
[10,] 1.0000000 0.4000000 1.4000000
[11,] 1.0000000 0.3333333 1.2222222
[12,] 1.0000000 0.6666667 2.6666667
[13,] 1.0000000 0.3333333 3.3333333
[14,] 1.0000000 0.6666667 3.3333333
[15,] 1.0000000 1.0000000 7.0000000
[16,] 1.0000000 0.3333333 1.6666667
[17,] 0.7500000 1.0000000 1.5000000
[18,] 1.0000000 0.5000000 2.7500000
[19,] 1.0000000 0.0000000 1.3333333
[20,] 1.0000000 0.6000000 1.8000000
[21,] 1.0000000 0.5000000 1.0000000
[22,] 1.0000000 0.7500000 3.0000000
[23,] 1.0000000 1.0000000 3.0000000
[24,] 1.0000000 0.1428571 2.1428571
[25,] 1.0000000 0.2000000 2.0000000

更新於: 13-Aug-2021

129 次瀏覽

開啟你的 職業生涯

透過完成課程取得認證

開始
廣告
© . All rights reserved.