如何在 R 中按行最小值拆分 data.table 物件行?


要在 R 的 data.table 物件中按行最小值拆分行值,我們可以遵循以下步驟:

  • 首先,建立一個 data.table 物件。
  • 然後,使用 apply 函式按行最小值拆分 data.table 物件行值。

建立 data.table 物件

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

> library(data.table)
> x<-sample(1:5,25,replace=TRUE)
> y<-sample(1:5,25,replace=TRUE)
> z<-sample(1:5,25,replace=TRUE)
> DT<-data.table(x,y,z)
> DT

執行上述指令碼後,將生成以下輸出(此輸出將在不同的系統中因隨機而異):

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

按行最小值拆分 data.table 物件行值

使用 apply 函式按行最小值拆分 DT 的行值:

> library(data.table)
> x<-sample(1:5,25,replace=TRUE)
> y<-sample(1:5,25,replace=TRUE)
> z<-sample(1:5,25,replace=TRUE)
> DT<-data.table(x,y,z)
> DT_new<-t(apply(DT,1, function(x) x/min(x)))
> DT_new

輸出

        x      y       z
[1,]  4.00 1.000000 3.000000
[2,]  4.00 3.000000  1.000000
[3,]  1.00 3.000000  5.000000
[4,]  1.00 5.000000  5.000000
[5,]  3.00 3.000000  1.000000
[6,]  1.00 1.000000  1.666667
[7,]  3.00 1.000000  4.000000
[8,]  2.00 1.000000  2.000000
[9,]  1.00 2.000000  5.000000
[10,] 5.00 1.000000  3.000000
[11,] 2.50 1.000000  2.500000
[12,] 1.50 2.500000  1.000000
[13,] 2.50 2.500000  1.000000
[14,] 3.00 1.000000  1.000000
[15,] 1.25 1.000000  1.250000
[16,] 2.00 1.000000  3.000000
[17,] 1.00 3.000000  3.000000
[18,] 1.00 2.000000  1.500000
[19,] 4.00 1.000000  4.000000
[20,] 1.00 1.000000  4.000000
[21,] 1.00 2.000000  1.000000
[22,] 1.00 1.000000  5.000000
[23,] 1.00 1.666667  1.000000
[24,] 1.00 1.000000  3.000000
[25,] 2.00 1.000000  2.000000

更新於: 2021 年 8 月 13 日

112 次瀏覽

開啟你的 職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.