R에서 데이터를 표준화하는 방법: 예제 포함


데이터세트를 표준화한다는 것은 데이터세트의 모든 값을 평균값이 0, 표준편차가 1이 되도록 조정하는 것을 의미합니다.

이를 수행하는 가장 일반적인 방법은 다음 공식을 사용하여 값의 크기를 조정하는 z-점수 표준화를 사용하는 것입니다.

( xix ) / 초

금:

  • x i : 데이터세트의 i번째
  • x : 표본의 의미
  • s : 표본의 표준편차

다음 예에서는 R의 dplyr 패키지와 함께 scale() 함수를 사용하여 z-점수 표준화를 통해 데이터 프레임에서 하나 이상의 변수를 확장하는 방법을 보여줍니다.

단일 변수 표준화

다음 코드는 세 개의 변수가 있는 데이터 프레임에서 단일 변수의 크기를 조정하는 방법을 보여줍니다.

 library (dplyr)

#make this example reproducible 
set.seed(1)

#create original data frame
df <- data.frame(var1= runif(10, 0, 50), 
                 var2= runif(10, 2, 23),
                 var3= runif(10, 5, 38))

#view original data frame
df

        var1 var2 var3
1 13.275433 6.325466 35.845273
2 18.606195 5.707692 12.000703
3 28.642668 16.427480 26.505234
4 45.410389 10.066178 9.143318
5 10.084097 18.166670 13.818282
6 44.919484 12.451684 17.741765
7 47.233763 17.069989 5.441881
8 33.039890 22.830028 17.618803
9 31.455702 9.980739 33.699798
10 3.089314 18.326350 16.231517

#scale var1 to have mean = 0 and standard deviation = 1
df2 <- df %>% mutate_at (c(' var1 '), ~( scale (.) %>% as.vector ))
df2

          var1 var2 var3
1 -0.90606801 6.325466 35.845273
2 -0.56830963 5.707692 12.000703
3 0.06760377 16.427480 26.505234
4 1.13001072 10.066178 9.143318
5 -1.10827188 18.166670 13.818282
6 1.09890684 12.451684 17.741765
7 1.24554014 17.069989 5.441881
8 0.34621281 22.830028 17.618803
9 0.24583830 9.980739 33.699798
10 -1.55146305 18.326350 16.231517

첫 번째 변수만 스케일링되었으며 다른 두 변수는 동일하게 유지되었습니다. 새로운 스케일링 변수의 평균값이 0이고 표준편차가 1이라는 것을 빠르게 확인할 수 있습니다.

 #calculate mean of scaled variable
mean(df2$var1)

[1] -4.18502e-18 #basically zero

#calculate standard deviation of scaled variable 
sd(df2$var1)

[1] 1

여러 변수 표준화

다음 코드는 데이터 프레임의 여러 변수를 한 번에 확장하는 방법을 보여줍니다.

 library (dplyr)

#make this example reproducible 
set.seed(1)

#create original data frame
df <- data.frame(var1= runif(10, 0, 50), 
                 var2= runif(10, 2, 23),
                 var3= runif(10, 5, 38))

#scale var1 and var2 to have mean = 0 and standard deviation = 1
df3 <- df %>% mutate_at (c(' var1 ', ' var2 '), ~( scale (.) %>% as.vector ))
df3

          var1 var2 var3
1 -0.90606801 -1.3045574 35.845273
2 -0.56830963 -1.4133223 12.000703
3 0.06760377 0.4739961 26.505234
4 1.13001072 -0.6459703 9.143318
5 -1.10827188 0.7801967 13.818282
6 1.09890684 -0.2259798 17.741765
7 1.24554014 0.5871157 5.441881
8 0.34621281 1.6012242 17.618803
9 0.24583830 -0.6610127 33.699798
10 -1.55146305 0.8083098 16.231517

모든 변수 표준화

다음 코드는 mutate_all 함수를 사용하여 데이터 프레임의 모든 변수를 확장하는 방법을 보여줍니다.

 library (dplyr)

#make this example reproducible 
set.seed(1)

#create original data frame
df <- data.frame(var1= runif(10, 0, 50), 
                 var2= runif(10, 2, 23),
                 var3= runif(10, 5, 38))

#scale all variables to have mean = 0 and standard deviation = 1
df4 <- df %>% mutate_all (~( scale (.) %>% as.vector ))
df4

          var1 var2 var3
1 -0.90606801 -1.3045574 1.6819976
2 -0.56830963 -1.4133223 -0.6715858
3 0.06760377 0.4739961 0.7600871
4 1.13001072 -0.6459703 -0.9536246
5 -1.10827188 0.7801967 -0.4921813
6 1.09890684 -0.2259798 -0.1049130
7 1.24554014 0.5871157 -1.3189757
8 0.34621281 1.6012242 -0.1170501
9 0.24583830 -0.6610127 1.4702281
10 -1.55146305 0.8083098 -0.2539824

추가 리소스

다음 튜토리얼에서는 R에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

R에서 데이터를 정규화하는 방법
R에서 표준편차를 계산하는 방법
R에서 결측값을 모두 대치하는 방법
R에서 데이터를 변환하는 방법(로그, 제곱근, 세제곱근)

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다