일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 머신러닝
- pandas
- 형태소분석기
- Tableau
- ionehotencoding
- 태블로
- pyspark
- 데이터
- Python
- 파이썬
- 인공지능
- 크롤링
- 데이터 분석
- Word Cloud
- Udemy
- selenium
- konlpy
- scikit-learn
- iNT
- input
- numpy
- 시각화
- SQL
- 데이터분석
- Okt
- Today
- Total
반전공자
R # 파생변수 본문
" 쉽게 배우는 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 |