(통계분석) R

09.24(목) 데이터 파악, 변수명 변경, 파생변수 생성

KSY98 2020. 9. 27. 22:59

📚해당 게시글은 '이지스 퍼블리싱' 출판, 데이터 분석가 '김영우'님이 지은 도서 "Do it! 쉽게 배우는 R 데이터 분석" 을 기반으로 작성된 게시글입니다. 저작권 문제 시 게시글을 삭제 하겠습니다 :) 

 

5강으로 들어왔다. 3일동안 6강까지 공부했는데,, 블로그 게시가 처음부터 밀려있어서 하나하나 작성하다보니까 지금 R 못돌린지 이틀째.. 주말에 제일 진도를 많이 뺄 수 있는데ㅠㅠ 블로그 쓰고, 공부하고 있는 자격증 후다닥 하니까 주말도 호다닥 없어져버려있다.

그래서 벌써 일요일 밤..?! 흑 6강은 내용이 조금 많으니까.. 오늘은 이 게시글 쓰고 자고, 내일 6강 업뎃이랑 7강 진도 빼야겠다. 

이틀정도면 배운것도 다 잊어버리겠다싶었는데, 글 작성하면서 하나하나 복습하는 중.. 정리하는 보람이 있구만! 

 

오늘의 제목은 데이터 분석의 기초.

 

- 데이터 파악하기

데이터를 파악하기 위해 우선 앞서 사용하던 "csv_exam.csv" 파일을 불러왔다.

 

head(), tail() 함수 이용해 데이터 파악

 

head(): 데이터의 앞부분 6행을 보여준다.

head(데이터 프레임명, n) : 데이터 프레임의 앞부분 n행을 보여준다.

tail(): 데이터의 뒷부분 6행을 보여준다.

tail(데이터 프레임명, n): 데이터 프레임의 뒷부분 n행을 보여준다.

 

View() 함수를 이용해 뷰어창에서 데이터 확인

 

View(): '뷰어 창'에 데이터 원자료를 보여준다.
View의 V는 대문자로 쓸것!

 

dim(), str(), summary() 함수 사용해 데이터 파악

 

dim(): 데이터가 몇 행, 몇 열로 구성되어있는지 보여줌.
(20 5 라고 결과가 뜬다면 20행 5열인 것)

str(): 데이터의 속성 확인. 모든 변수의 속성을 한눈에 파악할 수 있음

summary(): 변수의 값들을 요약한 요약 통계량을 산출하는 함수

 

 

 

위에 설명했던 함수들을 이용해 mpg 데이터 파악

 

mpg 데이터 파악에 앞서, mpg 데이터가 내장된 ggplot2 패키지를 설치해줬고,

as.data.frame() 함수를 이용해 mpg 데이터를 data frame 형태로 불러왔다.

사진 속 코드에서 확인할 수 있듯, ggplot2::mpg 의 의미는, ggplot2 내의 mpg 데이터를 지칭한다.

 

- 변수명 바꾸기

 변수명을 바꿔주기 위해 해당 함수가 들어있는 dplyr 패키지를 설치했다.

 

rename() 함수를 이용한 변수명 바꾸기

 

우선, df_raw에 데이터 프레임을 할당했다. 그리고, df_new라는 데이터 프레임에 df_raw를 할당해줬는데, 이는 df_raw를 복사한 것과 마찬가지이다.

이후, rename() 함수를 이용해 df_new의 'var2'라는 변수를 'v2'로 바꿔주었다.

사진 속 코드에서 볼 수 있듯, 변수 명을 바꿔줄 때는 '바꾸고자 하는 변수명 = 현재 변수명' 순으로 와야한다! 나는 이게 좀 헷갈려서..ㅎ

 

 

mpg내 변수명 변경

 

이번에는 ggplot2 내 mpg 데이터의 변수 이름을 바꿔주었다. cty는 city로, hwy는 highway로 변경!

 

- 파생변수 만들기

 파생변수란, 기존의 변수를 변형해 만든 변수를 의미한다.

 

변수를 조합해 파생변수를 만드는 과정

 

우선, df라는 데이터 프레임을 생성했다. 이후, df의 var1과 var2의 값을 더해 var_sum이라는 파생변수를 생성했다.

또한, var1과 var2의 평균을 구해 var_mean이라는 파생변수를 만들었다.

 

mpg의 통합 연비 변수 만들기

 

이번에는 ggplot2의 mpg에서, cty와 hwy 변수의 평균을 구해, total이라는 파생변수를 만들었다.

변수명이 바뀌었는지 확인하기 위해 head()함수를 이용해 mpg의 첫 3행만 출력해보았다.

또한, mean()함수를 이용해 아까 만든 파생변수 'total'의 평균값을 구했다.

 

 

ifelse()라는 조건문 함수를 이용해 파생변수 만들기

 

mpg 데이터를 이용해 '고연비 합격 판정'을 받은 자동차가 몇대인지 알아보았다.

우선, 합격/불합격의 기준값을 정하기 위해 summary()함수로 위에서 만든 total 변수의 평균과 중앙값등 요약 통계량을 산출했다.

hist() 함수로 히스토그램을 생성 한 결과, 평균과 중앙값은 약 20정도이고, 연비가 20~25 사이에 해당하는 자동차 모델이 제일 많으며, 대부분 25 이하이고 25를 넘기는 자동차는 많지 않다는 것을 알 수 있었다.

따라서, 합격/불합격의 기준점은 연비가 20을 넘느냐 마느냐로 정했다.

이제, ifelse()함수를 통해 합/불 결과를 알려주는 파생변수를 만들었다. test라는 파생변수 속에, ifelse(조건, 조건 충족시 부여 값, 조건 미충족시 부여 값)함수를 이용했다. 

데이터 확인 결과를 head()함수를 이용해 첫10행만 출력해보았다.

마지막으로, 연비 합격 빈도를 알려주는 빈도표를 생성하기 위해 table()함수를 사용했다.그 결과, 전체 mpg 데이터에서, fail을 받은(20 미만) 빈도는 106, pass를 받은(20 이상) 빈도는 128임을 알 수 있다.

 

 

중첩 조건문을 활용한 코딩

 

ifelse()함수에 ifelse()함수를 중첩시키면, 두개 이상의 결과가 필요할 때 유용하게 쓰일 수 있다.

위의 코드는 30을 넘기면 A, 그렇지 못할 경우, 20을 넘기면 B, 20도 못넘기면 C를 주라는 뜻이다.

나머지 과정은 위에서 해본 것과 같은 과정이다. 

참고로, qplot()함수를 이용하면 빈도 막대그래프를 생성할 수있다. 

 

- 분석 도전!

 단원 마지막 페이지의 문제를 통해, 지금까지 배웠던 함수들을 총 복습해보았다.

 

 

우선, ggplot2 의 midwest 데이터를 데이터 프레임 형식으로 불러왔다.

rename()함수를 이용해 poptotal이라는 변수명을 total로, popasian이라는 변수명을 asian으로 변경해줬다.

그리고, mpg_percent라는 변수에 전체 인구 대비 아시아 인구 백분율을 할당시켰다.

여기서, '백분율'이기 때문에 100을 곱해줘야한다 ㅠㅠ (처음에 *100 안해서 틀림 ㅠ)

방금 만든 mpg_percent라는 변수를 hist()함수를 이용해 히스토그램을 생성했고, mean()함수를 이용해 평균을 구했다.

사진이 잘렸는데,, 다음, ifelse() 함수를 이용해 앞단계에서 구한 평균을 초과하면 large, 그외에는 small을 부여하는 파생변수를 만들었다.  ifelse(mean(midwest$mpg_percent) > 0.4872462, "large", "small")

마지막으로, large와 small에 해당하는 지역은 빈도 파악을 위해 table()함수와 qplot()함수를 이용해 빈도표와 빈도 막대 그래프를 생성했다. large의 빈도는 119, small의 빈도는 318인 것으로 나타났다.

 

오늘은 확실히 정말 많은 것들이 머리에 들어왔다. ifelse()함수의 경우는 엑셀과 다를게 없었고, 그 외의 함수들도 어렵지 않아, 오늘도 즐거웠담 ㅎㅎ 내일부터는 R 진도도 나가고, 아직 남아있는 밀린 한 단원을 복습하면서 게시글 작성하는 것이 목표!

Value()함수의 대문자, 혹은 rename()함수에서 바꾸고자 하는 변수명이 먼저 올지 새로운 변수명이 먼저 오는지 등 헷갈릴만한 것 기억해두자!! :-)