如何标准化数据表中不在 R 中的所有多个列?


我们可按照以下步骤,对并非都存在于 R 中的数据表对象中的多个列进行标准化 -

  • 首先,创建一个 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

输出

执行上述脚本后,生成了如下输出(由于随机性的缘故,该输出在你的系统上会有所不同) -

     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

更新时间: 12-11-2021

216 次浏览

开启你的 职业生涯

完成课程获得认证

开始使用
广告