如果 R 数据框中某些列属于分类类型,如何对其进行标准化?

r programmingserver side programmingprogramming更新于 2025/6/24 7:37:17

如果 R 数据框中某些列属于分类类型,如何对其进行标准化?我们可以按照以下步骤操作 −

  • 首先,创建一个数据框。

  • 然后,使用 plyr 包中的 numcolwise 函数对某些列属于分类类型进行标准化。

示例

创建数据框

让我们创建一个如下所示的数据框 −

Level<-sample(c("low","medium","high"),25,replace=TRUE)
Group<-sample(c("first","second"),25,replace=TRUE)
Score<-sample(1:50,25)
Demand<-sample(1:100,25)
df<-data.frame(Level,Group,Score,Demand)
df

输出

执行时,上述脚本将生成以下输出(由于随机化,此输出将因您的系统而异) −

   Level  Group   Score Demand
1  high   second  37    31
2  medium second  43    89
3  medium second  31    50
4  medium first   16    60
5  low    first   23    29
6  low    second   3    26
7  medium first   26    55
8  low    first    9     9
9  high   second  14     3
10 medium first   33    36
11 low    second  15    34
12 medium first   19    85
13 medium second  41    71
14 medium second  50    78
15 low    second  36    69
16 medium second  17    49
17 high   second  38    76
18 high   first    6    99
19 low    first   35    91
20 medium first   39    12
21 low    first   47    62
22 medium second  45    59
23 medium first   44    64
24 medium second  21    25
25 high   second  11    57

如果某些列属于分类列,则求其标准化

使用 plyr 包中的 numcolwise 函数对数据框 df 中的数值列进行标准化 −

Level<-sample(c("low","medium","high"),25,replace=TRUE)
Group<-sample(c("first","second"),25,replace=TRUE)
Score<sample(1:50,25)
Demand<-sample(1:100,25)
df<-data.frame(Level,Group,Score,Demand)
library(plyr)
numcolwise(scale)(df)

输出

      Score       Demand
1  -0.02029767  0.99612442
2  -0.81770624  0.46627101
3   0.41465246  0.61765770
4  -0.38275611 -1.76668267
5   1.42953609  1.37459115
6   1.06707765  1.03397109
7   0.63212752 -1.31252260
8  -0.60023118 -0.36635579
9   0.99458596  0.73119771
10 -0.16528105  0.69335104
11 -1.25265637 -0.70697584
12  0.84960258 -0.85836253
13 -0.52773949 -0.10142908
14  0.19717739 -1.69098933
15 -1.10767299  0.84473773
16 -1.47013143 -1.27467593
17  0.55963583  1.14751111
18 -1.83258988 -1.50175597
19  1.35704440 -0.17712243
20 -0.74521455  0.54196435
21 -0.67272287 -0.06358241
22  1.28455271 -0.25281577
23  0.48714414  0.76904439
24  1.50202778 -0.59343583
25 -1.18016468  1.45028449

相关文章