📜  如何标准化一列 R DataFrame ?

📅  最后修改于: 2022-05-13 01:55:06.332000             🧑  作者: Mango

如何标准化一列 R DataFrame ?

在进一步处理之前,可能需要对具有不同范围和单位的多列的大型数据集进行标准化。在本文中,我们将讨论如何在 R 编程语言中标准化一列数据框。

让我们首先讨论标准化。标准化是一种特征缩放技术。这是重新调整数据的过程,使数据的平均值为“0”,标准差为“1”。

公式:

Z =\frac{x_i-\bar{x}}{\sigma}

这里, \bar{x}   是平均的并且\sigma   是标准差。我们从观察中的每个值中减去平均值,然后除以标准差。这也称为 Z 分数公式。



例子 :

 

Name

Age

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 和年龄列。所以,我们的数据集应该是这样的:

 

Name

Age

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

方法一:使用Scale函数。

R 有一个名为 scale() 的内置函数,用于标准化。

此处, “x”表示要对其应用标准化的数据列/数据集。 “center”参数采用布尔值,当它设置为 True 时,它将从观察值中减去平均值。 “scale”参数采用布尔值,当它设置为 True 时,它将结果差异除以标准偏差。

方法:

  • 创建数据集
  • 对数据列应用缩放函数
  • 将矢量结果转换为数据框
  • 显示结果

程序:

R
# 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


R
# 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


输出:

https://media.geeksforgeeks.org/wp-content/uploads/20210327142528/Screenshotfrom20210327142510-300x174.png

使用比例

方法 2:使用基础 R

方法:

  • 创建数据集。
  • 创建标准化函数。
  • 将此函数应用于数据列。
  • 将矢量结果转换为数据框
  • 显示结果

程序:

电阻

# 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

输出:

https://media.geeksforgeeks.org/wp-content/uploads/20210327143609/Screenshotfrom20210327143537.png

使用自定义标准化函数