如何在r中缩放0到1之间的值


您可以使用以下方法在 R 中将变量的值缩放在 0 和 1 之间:

方法一:使用R库

 #define function to scale values between 0 and 1
scale_values <- function (x){(x-min(x))/(max(x)-min(x))}

x_scaled <- rescale(x)

方法2:使用scales包

 library (scales)

x_scaled <- rescale(x)

以下示例展示了如何在 R 中使用以下数据框实际使用每种方法:

 #create data frame
df <- data. frame (store=c('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'),
                 sales=c(12, 24, 23, 59, 45, 34, 50, 77))

#view data frame
df

  blind sales
1 to 12
2 B 24
3 C 23
4 D 59
5 E 45
6 F 34
7 G 50
8:77 a.m.

示例 1:使用基数 R 将值缩放在 0 和 1 之间

以下代码展示了如何在基础 R 中定义自定义函数,然后使用该函数将数据框的sales列中的值缩放在 0 和 1 之间:

 #define function to scale values between 0 and 1
scale_values <- function (x){(x-min(x))/(max(x)-min(x))}

#scale values in 'sales' column to be between 0 and 1
df$sales <- scale_values(df$sales)

#view updated data frame
df

  blind sales
1 A 0.0000000
2 B 0.1846154
3 C 0.1692308
4 D 0.7230769
5 E 0.5076923
6 F 0.3384615
7G 0.5846154
8 H 1.0000000

Sales列中的每个值现在都在 0 和 1 之间缩放。

该函数使用以下公式来缩放每个值:

  • 缩放值 =(值 – 最小值)/(最大值 – 最小值)

例如,商店 A 的销售额的换算值计算如下:

  • 换算值 = (12 – 12) / (77 – 12) = 0 / 65 = 0

同样,B店销售额现值计算如下:

  • 换算值 = (24 – 12) / (77 – 12) = 12 / 65 = 0.1846

等等。

示例2:使用Scales包将值缩放在0和1之间

下面的代码展示了如何使用R中scales包的rescale()函数将数据框的sales列中的值缩放到0到1之间:

 library (scales)

#scale values in 'sales' column to be between 0 and 1
df$sales <- rescale(df$sales)

#view updated data frame
df

  blind sales
1 A 0.0000000
2 B 0.1846154
3 C 0.1692308
4 D 0.7230769
5 E 0.5076923
6 F 0.3384615
7G 0.5846154
8 H 1.0000000

Sales列中的每个值现在都在 0 和 1 之间缩放。

请注意,这些缩放值对应于使用 R 基方法计算的值。

另请注意, rescale()函数接受指定缩放值范围的 to 参数。

例如,您可以使用以下语法将sales列中的值缩放在 0 到 100 之间:

 library (scales)

#scale values in 'sales' column to be between 0 and 100
df$sales <- rescale(df$sales, to=c(0,100))

#view updated data frame
df

  blind sales
1 A 0.00000
2 B 18.46154
3 C 16.92308
4 D 72.30769
5 E 50.76923
6 F 33.84615
7G 58.46154
8 A.M. 100.00000

Sales列中的每个值现在都在 0 到 100 之间缩放。

其他资源

以下教程解释了如何在 R 中执行其他常见任务:

如何计算 R 中的截尾平均值
如何计算R中的加权平均值
如何计算R中每一行的最大值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注