R语言 如何对R数据框架的某一列进行标准化
一个大的数据集有多个不同范围和单位的列,在进一步处理之前可能需要进行标准化处理。在这篇文章中,我们将讨论如何在R编程语言中对数据框架的某一列进行标准化。
让我们先讨论一下标准化问题。标准化是一种特征缩放技术。它是一个重新调整数据比例的过程,使数据的 平均值 为 “0”, 标准差 为 “1”。
公式
这里,是平均值,是标准差。我们从观察中的每个值中减去平均值,然后除以标准差。这也被称为Z-score公式。
例子 :
编号 | 姓名 | 年龄 | CGPA |
---|---|---|---|
1. | A | 15 | 5.0 |
2. | B | 16 | 4.0 |
3. | C | 20 | 5.0 |
4. | D | 19 | 2.0 |
5. | E | 19 | 1.0 |
6. | F | 17 | 3.0 |
在这个数据集中,我们把学生姓名、年龄和CGPA作为列名。由于年龄在15到20之间,CGPA在1.0到5.0之间。我们希望将CGPA和年龄列标准化。因此,我们的数据集应该是这样的。
编号 | 姓名 | 年龄 | CGPA |
---|---|---|---|
1. | A | -1.3561270 | 1.0206207 |
2. | B | -0.8475794 | 0.4082483 |
3. | C | 1.1866111 | 1.0206207 |
4. | D | 0.6780635 | -0.8164966 |
5. | E | 0.6780635 | -1.4288690 |
6. | F | -0.3390318 | -0.2041241 |
方法1:使用scale函数
R有一个内置的函数叫scale(),用于标准化的目的。
语法: scale(x,center=True,scale=True)
这里, “x”代表你想应用标准化的数据列/数据集。 “center”参数采用布尔值,当它被设置为True时,它将从观察值中减去平均值。 “scale “参数采用布尔值,当它被设置为True时,它将用标准差除掉所得的差值。
方法
- 创建数据集
- 在数据列上应用scale函数
- 将向量结果转换为数据框
- 显示结果
程序
# Creating Dataset
X <- c('A','B','C','D','E','F')
Y <- c(15,16,20,19,19,17)
Z <- c(5.0,4.0,5.0,2.0,1.0,3.0)
dataframe <- data.frame(Name = X, Age = Y, CGPA = Z )
# applying scale function
dataframe[2 : 3] <- as.data.frame(scale(dataframe[2 : 3]))
# displaying result
dataframe
输出
使用规模
方法2:使用基数R
方法
- 创建数据集。
- 创建一个用于标准化的函数。
语法: standardize = function(x){ z <- (x – mean(x))/ sd(x) return( z)}
- 将此函数应用于数据列。
- 将向量结果转换为数据框
- 显示结果
程序
# Creating Dataset
X <- c('A', 'B', 'C', 'D', 'E', 'F')
Y <- c(15, 16, 20, 19, 19, 17)
Z <- c(5.0, 4.0, 5.0, 2.0, 1.0, 3.0)
dataframe <- data.frame(Name = X, Age = Y, CGPA = Z )
# creating Standardization function
standardize = function(x){
z <- (x - mean(x)) / sd(x)
return( z)
}
# apply your function to the dataset
dataframe[2:3] <-
apply(dataframe[2:3], 2, standardize)
#displaying result
dataframe
输出
使用自定义标准化功能