如何在R中的data.table对象中标准化多个列而不是全部?
要标准化data.tableR中并非全部在对象中的多列,我们可以按照以下步骤操作-
首先,创建一个data.table对象。
然后,使用单个方括号对列进行子集化,并使用lapply、list和scale函数对这些列进行标准化。
示例
创建data.table对象
让我们创建一个data.table对象,如下所示-
library(data.table) x<-sample(1:50,25) y<-sample(1:50,25) z<-sample(1:50,25) DT<-data.table(x,y,z) DT输出结果
执行时,上述脚本生成以下内容output(thisoutputwillvaryonyoursystemduetorandomization)-
x y z
1: 31 19 49
2: 4 38 45
3: 25 46 43
4: 21 45 32
5: 50 48 14
6: 48 8 50
7: 32 33 18
8: 36 20 42
9: 15 18 47
10: 49 43 19
11: 30 21 36
12: 10 35 24
13: 47 14 27
14: 1 47 21
15: 5 32 34
16: 20 26 30
17: 42 15 7
18: 26 2 33
19: 33 41 23
20: 22 42 48
21: 44 9 10
22: 23 7 46
23: 28 40 8
24: 16 31 22
25: 9 44 37
x y z标准化多列并非全部
用单个方括号子集x和y列,并使用lapply、list和scale函数来标准化这些列,如下所示-
library(data.table)
x<-sample(1:50,25)
y<-sample(1:50,25)
z<-sample(1:50,25)
DT<-data.table(x,y,z)
DT[,c("y","z"):=lapply(list(y,z),scale)]
DT输出结果 x y z
1: 31 -0.6845293 1.3518818
2: 4 0.6212997 1.0579944
3: 25 1.1711225 0.9110508
4: 21 1.1023946 0.1028606
5: 50 1.3085782 -1.2196325
6: 48 -1.4405357 1.4253536
7: 32 0.2776605 -0.9257451
8: 36 -0.6158015 0.8375789
9: 15 -0.7532572 1.2049381
10: 49 0.9649390 -0.8522733
11: 30 -0.5470737 0.3967479
12: 10 0.4151162 -0.4849141
13: 47 -1.0281686 -0.2644986
14: 1 1.2398503 -0.7053296
15: 5 0.2089327 0.2498042
16: 20 -0.2034344 -0.0440831
17: 42 -0.9594407 -1.7339353
18: 26 -1.8529027 0.1763324
19: 33 0.8274833 -0.5583860
20: 22 0.8962111 1.2784099
21: 44 -1.3718078 -1.5135198
22: 23 -1.5092635 1.1314663
23: 28 0.7587554 -1.6604635
24: 16 0.1402048 -0.6318578
25: 9 1.0336668 0.4702197
x y z