如何标准化数据表中不在 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
广告