R scale() 函数 - 数据标准化
R scale() 函数用于对数据进行标准化处理(z-score 标准化)。
标准化后数据的均值为 0、标准差为 1,常用于消除不同量纲带来的影响。
scale() 函数语法格式如下:
scale(x, center = TRUE, scale = TRUE)
参数说明:
x 输入数值矩阵或数据框。
center 是否进行中心化(减去均值),默认为 TRUE。
scale 是否进行缩放(除以标准差),默认为 TRUE。
实例
# 原始数据:不同量纲的变量
height <- c(160, 170, 165, 175, 180) # 范围 160-180
income <- c(50000, 60000, 55000, 80000, 90000) # 范围 50000-90000
age <- c(25, 30, 28, 35, 40) # 范围 25-40
# 合并为矩阵
data_matrix <- cbind(height, income, age)
print("原始数据:")
print(data_matrix)
# 标准化
scaled_data <- scale(data_matrix)
print("标准化后(均值为0,标准差为1):")
print(round(scaled_data, 3))
# 验证均值和标准差
print("标准化后各列均值(应接近0):")
print(round(colMeans(scaled_data), 3))
print("标准化后各列标准差(应等于1):")
print(round(apply(scaled_data, 2, sd), 3))
height <- c(160, 170, 165, 175, 180) # 范围 160-180
income <- c(50000, 60000, 55000, 80000, 90000) # 范围 50000-90000
age <- c(25, 30, 28, 35, 40) # 范围 25-40
# 合并为矩阵
data_matrix <- cbind(height, income, age)
print("原始数据:")
print(data_matrix)
# 标准化
scaled_data <- scale(data_matrix)
print("标准化后(均值为0,标准差为1):")
print(round(scaled_data, 3))
# 验证均值和标准差
print("标准化后各列均值(应接近0):")
print(round(colMeans(scaled_data), 3))
print("标准化后各列标准差(应等于1):")
print(round(apply(scaled_data, 2, sd), 3))
执行以上代码输出结果为:
[1] "原始数据:"
height income age
[1,] 160 50000 25
[2,] 170 60000 30
[3,] 165 55000 28
[4,] 175 80000 35
[5,] 180 90000 40
[1] "标准化后(均值为0,标准差为1):"
height income age
[1,] -1.2649 -1.2647 -1.2649
[2,] 0.0000 -0.4739 0.0000
[3,] -0.6325 -0.8699 -0.6325
[4,] 0.6325 0.7109 0.6325
[5,] 1.2649 1.8976 1.2649
[1] "标准化后各列均值(应接近0):"
height income age
0 0 0
[1] "标准化后各列标准差(应等于1):"
height income age
1 1 1

R 语言实例