clear_uncertainty

R - R언어로 파생변수만들기(조건문 ifelse, 중첩조건문 ifelse, hist, table, qplot) 본문

언어/R

R - R언어로 파생변수만들기(조건문 ifelse, 중첩조건문 ifelse, hist, table, qplot)

SOidentitiy 2023. 1. 11. 17:49
728x90

이번 포스트에서는 R언어로 파생변수를 만드는 것에 대해 서술하겠습니다.


변수를 조합하거나 함수를 적용해 새 변수를 만들어 분석할 수 있습니다.

파생변수란 기존의 변수를 조합하여 새로운 변수를 만들어 내는 것을 의미합니다.
사용자가 특정 조건을 만족하거나 특정 함수에 의해 값을 만들어 의미를 부여하는 변수로 매우 주관적일 수 있으므로 논리적 타당성을 갖출 필요가 있습니다. 특정상황에만 의미성 부여가 아닌 보편적이고 전 데이터구간에 대표성을 가지는 파생변수 생성을 위해서 노력해야 합니다. 세분화 고객행동예측, 캠페인반응예측 등에 활용할 수 있습니다.

활용에 실습하기 위해 ggplot2 패키지에 내장된 mpg 데이터를 이용해보겠습니다.

head를 통해 mpg를 보니, 많은 열과 몇개가 끝인지 모르는 행이 있습니다. 행과 열의 개수를 파악하기 위해 dim()을 사용합니다.

dim(mpg)를 통해 확인한 결과 234개의 행과 11개의 열이 존재합니다.

mpg에는 cty라는 변수와 hwy라는 변수가 있습니다. 이 둘의 평균은 변수로 존재하지 않지만 직접 만들어 변수로 추가해보겠습니다.

데이터를 추출하면 직접만든 cty_hwy_mean 변수가 추출된 것을 볼 수 있습니다.


위처럼 변수를 조합할 수도 있지만 함수를 이용해 파생변수를 만들 수도 있습니다.

조건문 함수를 통해 파생변수를 만들어보겠습니다.

위에서 구한 cty_hwy_mean 값이 20이 넘으면 pass, 20을 넘지 못하면 fail을 부여하도록 하는 변수를 생성해보겠습니다.

ifelse() 조건문 함수를 통해 지정한 조건과 맞을 때(20 이상일 때)와 조건과 맞지않을 때(20 미만일 때) pass와 fail을 부여하고, test라는 변수를 생성하는 기능을 구현합니다. 

ifelse(조건, 조건이 만족되면 실행, 조건이 만족되지 못하면 실행)

이제 pass 판정을 받은 자동차와 fail 판정을 받은 자동차가 각각 몇 대인지 알아봅시다.

위의 결과처럼 table()을 통해 확인할 수 있습니다. 

table을 통해 빈도표를 만들면 pass한 자동차와 fail한 자동차가 각각 몇 대인지 알 수 있습니다.

이를 막대 그래프로 빈도 표현할 수 있습니다.

ggplot2패키지에 내장된 qplot()은 값의 빈도를 막대그래프로 표현합니다.


또한, 하나의 조건이 아닌 중첩 조건문 활용할 수 있습니다.

만약 cty_hwy_mean이 30 이상이면 A, 20~29는 B, 20 미만이면 C 등급으로 분류하겠습니다.

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

위와 같은 코드를 통해 grade 변수를 만들 수 있습니다.

마찬가지로 table과 qplot을 통해 데이터의 분포를 파악할 수 있습니다.

grade의 빈도 분포는 B가 제일 많고 A가 압도적으로 적은 것을 확인할 수 있었습니다.


 

출처

 

Do it 쉽게 배우는 R 데이터 분석 ...

18,000원

itempage3.auction.co.kr

 

[2과목] 빅데이터 탐색 - 파생변수, 요약변수, 변수 변환

1. 파생변수(주관적 변수 개념) - 기존의 변수를 조합하여 새로운 변수를 만들어 내는 것을 의미한다. - 사용자가 특정 조건을 만족하거나 특정 함수에 의해 값을 만들어 의미를 부여하는 변수로

amaze9001.tistory.com

 

728x90