如何在R中隨機化data.table物件中一組列的列值?


為了在R中隨機化data.table物件中一組列的列值,我們可以按照以下步驟操作:

  • 首先,建立一個data.table物件。
  • 然後,使用sample函式結合lapply進行隨機化,同時使用SDcols選擇列。

建立資料框

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

示例

library(data.table)
ID<-1:20
x<-rpois(20,5)
y<-rpois(20,10)
z<-rpois(20,8)
DT<-data.table(ID,x,y,z)
DT

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

輸出

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

隨機化data.table物件中選定列的列值

使用lapply和sample函式隨機化DT中第2、3和4列的列值:

示例

library(data.table)
ID<-1:20
x<-rpois(20,5)
y<-rpois(20,10)
z<-rpois(20,8)
DT<-data.table(ID,x,y,z)
DT[,(2:4):=lapply(.SD,sample),.SDcols=2:4]
DT

輸出

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

更新於: 2021年8月7日

135 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.