반전공자

R # 파생변수 본문

데이터분석/R

R # 파생변수

하연01 2021. 1. 22. 00:03

" 쉽게 배우는 R 데이터 분석 " 을 교재로 하여 공부하는 과정을 작성한 글입니다." (일개 대학생입니다.)

 

 

# 파생변수

 

 

우린 계속해서 변수에 대해 배우고 있다.

 

우리가 가진 데이터를 가지고 분석을 하려면 평균을 내거나, 하위 n%를 계산하는 과정이 필요할텐데, 

 

매번 계산하는 과정을 거친다면 매우매우 귀찮을 것이다! 

 

때문에 수를 계산해서 아예 열로 포함시켜버리도록 하는 것이 " 파생변수 " 이다. 

 

 

새로운 실습을 위해 데이터 프레임을 만들어볼까?!

 

 

df <- data.frame(var1=c(4,3,8), var2=c(2,6,1))

 

 

생각보다 파생변수를 만드는 방법은 간단했다!

 

만약 var1 과 var2를 합한 파생변수를 만들고 싶다면?!

 

이전에 배웠던 $를 활용해야한다.

 

df$var_sum <- df$var1 + df$var2

df$var_sum <- df$var1 + df$var2

화살표의 좌측에는 새로 추가할 열의 변수명을 써주고, 우측에는 df의 기존 변수들을 각각 지정해준다. 

 

그럼 이렇게 우측에 var_sum이라는 열이 생겼다!! 

 

그렇다면 평균은 어떻게 할까>! 

 

 

 

영어점수와 수학점수를 가지고 새로운 데이터 프레임을 만들어 평균을 알려주는 새로운 파생변수를 만들어보자~

 

 

 

세번째 줄에서 왜 평균 앞에 공백을 넣었는지에 대한 이유? 

-> 공백 없이 출력하니 간격이 너무 좁게 출력되어 ,, 미관상,, 공백을 넣어 "평균" 이라는 글자를 우측으로 좀 밀어줬다!

* 공백을 넣기 위해 ""로 묶어줬지만, 따옴표 없이 그냥 평균 이라는 글자를 써도 적용 가능하다! 

 

 

 

파생변수가 적용된 데이터 프레임을 출력해보았다.

 

 

잠깐 점수를 가지고 실습했지만 다시 df로 돌아가서 이어 실습해보겠다. 

 

 

var_sum 우측에 새롭게 var_mean을 추가해볼까? 

 

아까와 코드는 같다! 

 

df$var_mean <- (df$var1 + df$var2)/2 

데이터프레임$파생변수 <- (데이터프레임$변수1 + 데이터프레임$변수2)/2

 

 

 

여기서 또 다시 실제 데이터에 가까운 mpg 데이터를 가지고 실습해보자! 

 

가장 주의깊게 봤던 city, highway를 가지고 어떤 파생변수를 만들 수 있을까?

 

-> 통합 연비 !

 

통합연비를 계산하는 것은 도시연비와 고속도로 연비의 평균이라고 한다. 

 

통합연비의 새로운 변수명으로 "total"을 사용하겠다! 

 

 

mpg$total <- (mpg$city + mpg$highway)/2

 

코드를 실행하니 표의 가장 우측에 새로운 열이 생겼음을 볼 수 있다! 

 

head(mpg)를 사용해서 6줄만 뽑아봐도 우측에 total이 생겼음을 볼 수 있다! 

각 행을 가지고 평균을 낸 것이 total이기에 total을 가지고 또 다른 평균을 내려면? 

 

 

mean(mpg$total)

실행시키면 바로 아래에 평균값을 보여준다. 

-> 어라라 여기도 $가 쓰이네?! (언제나 $는 지정의 의미를 갖는다!) 

 

그럼 total의 값을 가지고 간단한 숫자들을 뽑아볼까? 

 

summary(mpg$total)

 

흠, 숫자만 보니 재미가 없군. 

 

히스토그램을 만들어볼까? 

 

hist(mpg$total)

 

total의 히스토그램 

x축에 mpg$total이라고 쓰여 있다.

y축을 보면 빈도에 대한 표임을 알 수 있다! 

 

 

 

표를 통한 통찰력 

- 연비가 20~25 사이인 차량이 가장 많다. 

- 대부분은 연비가 25 이하이다. 

 

 

 

 

Q. 우리가 연비를 보는 이유가 무엇일까? 

- 연비가 높을수록 좋은 차량 

-> 그렇다면 기준점 연비 20을 넘을때 " 합격 !"을 주자. 

-> 20을 넘지 못한 경우엔 " 불합격! "

 

 

 

 

 

 

 

 

 

 

# 조건문 

 

여기서 쓰이는 함수? 조건문 함수 ifelse()

 

- 형식 

ifelse(조건, 조건맞을 때 부여할 것, 조건 안맞을 때 부여할 것) 

 

연비 합격, 불합격을 위한 조건문을 작성해볼까? 

 

 

ifelse(mpg$total, "pass", "fail")

 

실행하면 아래 실행창에 바로 각각 결과가 보인다. 

 

 

이렇게 보니 너무너무,, 복잡해,, 뭘 어떻게 보라는거야!

-> 파생변수에 넣어주자!! 

 

mpg$test <- ifelse(mpg$total >= 20, "pass", "fail")

이렇게 기준에 따라 pass와 fail을 보여주는 열이 생겼음을 볼 수 있다! 

 

그럼 이렇게 봐선 pass와 fail이 각각 몇개인지 알 수 없으니, 표로 보자! 

 

hist(mpg$test) 

-> 에러!!!! 

Q. 왜>!!>>!!

 

 

 

fail, test는 " 문 자 " 인데,, 히스토그램은 x 축에 숫자가 있어야만 한다고 에러메세지에서 알려준다! 

때문에 ggplot2 패키지 속 qplot을 통해 표를 만들어야 한다! 

 

 

 

ggplot2를 불러오자! (꼭 불러오고나서 qplot을 사용해야함!)

 

library(ggplot2)
qplot(mpg$test)

- fail보다 pass가 많다. (이전 히스토그램을 보면 20 이상의 차량이 중간 이상이었기 때문에 당연한 결과!)

 

 

 

 


# 중첩조건문 

 

위는 20을 기준으로 단지 두가지로 나누어져있지만, 연비를 등급으로 체크하고싶다면? 

 

-> 중첩조건문! 

 

grade라는 새로운 파생변수 속에 중첩조건문을 넣어 수를 기준으로 판단하여 grade에 값을 넣도록 한다! 

 

 

mpg$grade <- ifelse(mpg$total>=30, "A",
                      ifelse(mpg$total>=20, "B", "C")

 

* 파이썬과는 중첩조건문을 쓰는 형식이 다르지만 훨씬 간단하다!! 

실행 후에 적용되었는지 확인하기 위해 View(mpg)를 실행시켜보자.

A, B, C가 기준에 따라 적용되었음을 알 수 있다!

 

 

# table 

- 위에서 만들었던 변수 grade 속 A, B, C의 각각 빈도를 보여주는 함수 

 

 

table(mpg$grade)

 

B등급의 차량이 가장 많음을 알 수 있다! 

그렇다면 아까 pass, fail로 그래프를 그렸던 것처럼 그래프를 그려보자!! 

 

 

 

 

qplot(mpg$grade)

그래프로 보니 더 확연하게 차이가 느껴지고 얼마나 많은지를 쉽게 볼 수 있다. 

 

- A와 B, C의 차이가 많이 난다!

 

여기서 얼마든지 더 많은 범위를 만들어 줄 수 있다! 

D를 추가해볼까 ? 

 

mpg$grade <- ifelse(mpg$total>=30, "A", 
                     ifelse(mpg$total>=25, "B", 
                         ifelse(mpg$total>20, "C", "D")))

* 괄호 개수에 주의하자! 

 

범위를 하나 더 추가한 표! 

 

 

 

오늘은 변수와,, 파생변수,, 조건문!!,  표까지! 

 

뭔가 가장 많이 배운 날이야!! 

 

보람차!! 

딱 12시에 다 배웠당~!~!~ 

 

다음 시간에는 데이터 가공에 대해서 배워보자~!

'데이터분석 > R' 카테고리의 다른 글

R # 데이터 가공, 실습  (0) 2021.01.23
R # 데이터분석 실습  (0) 2021.01.23
R # 변수명 바꾸기  (0) 2021.01.21
R #데이터 파악하기  (0) 2021.01.20
R # 데이터 불러오기  (0) 2021.01.20