Database for Everything

[R 프로그램] 기초부터 다지기-파생변수 만들기(Derived Variable)_조건문 생성 본문

R

[R 프로그램] 기초부터 다지기-파생변수 만들기(Derived Variable)_조건문 생성

Yeenn 2021. 9. 9. 16:02
728x90

 

데이터 프레임 생성하기

 

데이터 내의 변수만 이용해 분석할 수도 있지만, 데이터 내의 여러 변수들을 조합한 파생변수를 만들어 분석하는 것이 훨씬 유용한 경우도 많다. 

 

우선 실습을 위한 데이터 프레임을 생성했다. 

아래의 데이터 프레임에는 두 개의 변수를 할당해주었다.

 

 

 

 

파생변수 생성하기

 

파생변수는 데이터 프레임명에 $를 붙여 새로 만들 변수명을 입력하고, <-로 계산 공식을 할당하는 형태로 코드를 작성하면 된다. 이 때, 새로운 파생변수를 생성할 때 마다 새로 만들 변수명 앞에 데이터 프레임명을 반복해서 입력해야 하는 것을 유의해야 한다.

 

 

위의 첫 번째 코드는 앞서 생성해준 'df' 데이터 프레임에 var1과 var2을 합한 파생 변수 var_sum을 생성한 코드 이며, 두 번째 코드는 앞서 생성해준 'df' 데이터 프레임에 var1과 var2을 더한 후 2로 나눈 평균 파생변수 var_mean을 생성한 코드이다. 

 

 

 

 

파생변수 생성하기(심화)

 

다음은, ggplot2 패키지의 mpg 데이터를 이용하여 파생변수를 생성해보겠다.

mpg(Mile Per Gallon) 데이터는 미국 환경 보호국(US Environmental Protection Agency) 에서 공개한 자료로, 1999-2008년 사이 미국에서 출시된 자동차 234종의 연비 관련 정보를 담고 있는 데이터이다.

 

mpg데이터에는 cty(도시 연비) 변수와 hwy(고속도로 연비) 변수가 있다. 도로 유형을 통틀어 어떤 자동차 모델의 연비가 가장 높은지 분석하기 위해서는 하나로 통합된 연비 변수가 필요하다.

 

 

total 변수를 추가하여 도로 유형을 통합한 연비 변수를 만들어주었다. head()를 통해 데이터의 일부를 출력해보면, total 변수가 추가된 것을 확인할 수 있다. 

 

 

 

 

변수 분포 살펴보기

 

summary()를 이용해 앞서 생성한 통합 연비 변수 total의 요약통계량 값을 확인하였다. Median값은 20.50이며, Mean값은 20.15이다.

 

 

중앙값을 직관적으로 확인하기 위해 total 변수의 히스토그램을 그려보았다. hist(변수명)을 입력하면, 해당 변수의 히스토그램이 그려지는 것을 확인할 수 있다. 

 

 

히스토그램을 통해 알 수 있는 사실은,

 

→ total 연비의 평균과 중앙값이 20에 가까이 위치해 있다.

→ total 연비가 20-25 사이에 해당하는 자동차 모델이 가장 많다.

→ 대부분의 자동차의 total 연비가 25이하이며, 25를 초과하는 자동차는 많지 않다.

 

와 같이 요약될 수 있다. 

 

 

이를 통해, total 연비가 20이상인 자동차에게 고연비 등급을 부여할 수 있을 것으로 판단할 수 있으며 이러한 등급을 기준으로 합격과 불합격 여부를 가르는 파생변수를 생성해보겠다. 

 

 

 

 

 

조건문을 활용한 파생변수 생성하기

 

ifelse()는 가장 많이 활용하는 조건문 함수이다.

 

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

1. 조건

2. 조건에 맞을 때 부여

3. 조건에 맞지 않을 때 부여

 

ifelse()구문은 위와 같은 순서로 코드를 작성하면 된다. 

 

위 코드를 R에 그대로 입력해보면, 아래와 같은 값이 출력된다.

 

 

이러한 합격/불합격 판정 변수를 mpg$test 변수를 생성하여 할당한 후, head()함수를 통해 20번째 행까지 출력하면, 아래와 같은 결과를 확인할 수 있다. 

 

 

 

변수별로 기준값에 따라 "pass" 와 "fail"이 부여되어 있는데, 이러한 값들의 개수를 파악하기 위한 table()함수를 사용해보겠다.

 

 

 

 

 

빈도표 확인하기

 

1. table(변수명) 을 이용하면, 변수의 값들이 몇 개씩 존재하는지 그 데이터의 개수를 나타낸 표를 확인할 수 있다. 

 

 

 

2. 빈도수는 막대 그래프를 통해서도 확인할 수 있는데, ggplot2 패키지에 내장된 plot()을 이용하면 test 변수의 변수별 빈도를 시각화하여 살펴볼 수 있다. 

 

 

 

 

 

중첩 조건문 생성하기(심화)

 

세 가지 이사의 범주를 값을 부여하려면 ifelse()안에 다시 ifelse()를 넣는 형식으로 조건문을 중첩하여 작성해야 한다. 

 

다음과 같은 조건을 담은 중첩 조건문을 생성해보자.

1. 첫번째 ifelse()조건에 따라 total이 30이상이면 "A"를 부여한다.

2. 조건에 맞지 않으면 두 번째 ifelse()를 실행한다. 두 번째 조건에 따라 total이 20이상이면 "B"를 부여한다.

3. 두 번째 조건도 맞지 않으면 "C"를 부여한다.

 

 

조건문을 담은 grade 변수를 생성한 후, head()를 통해 20번째 행까지 변수를 살펴본 결과는 위와 같다. 

 

 

 

※ 위 포스팅은 「Do it! 쉽게 배우는 R 데이터 분석(이지스리퍼블리싱)」 도서를 참고하여 작성되었습니다.

728x90
Comments