2020.02.09(일) 토요일 에졔 풀이


#데이터 셑을 bank2라고 하고 시작하겠습니다.


library(readr)
library(dplyr)
bank2 <- read_delim("bank.csv", ";", escape_double = FALSE, 
                   trim_ws = TRUE)
View(bank2)

hist(bank2$age) 
#age그룹 분포를 본다

summary(bank2$age) 
#연령대 구간에 참고



#10세 미만은없으나 98(?)세가 있다.
#>20 21~30 31~40 41~50 51~60 61세 이상으로 그룹을 나눈다.

#방법

attach(bank2)
bank2$agecat[age > 70] <- "70"
bank2$agecat[age > 59 & age <= 69] <- "60"
bank2$agecat[age > 49 & age <= 59] <- "50"
bank2$agecat[age > 39 & age <= 49] <- "40"
bank2$agecat[age > 29 & age <= 39] <- "30"
bank2$agecat[age > 19 & age <= 29] <- "20"
bank2$agecat[age <= 19] <- "10"
detach(bank2) 

table(bank2$agecat)


#파이차트 복습 : 연령대별 비중을 시각화

freq_agecat<-table(bank2$agecat)
names(freq_agecat) <- c ("10", "20", "30","40","50","60","OVER70")   

#age변수는 10, 20, 30, 40, 50, 60, over70 7가지 범주 데이터로 이루어져 있습니다. 이들의 비중을 파이차트로 보여주는거죠
#만약에 over70 말고 다른 변수명, 예를 들어 over 90을 넣으면 어떻게 될까요

pie(freq_agecat)

##차트를 자세히 그리는 것은 "시각화 별도 세션ㅇ로 설명드리겠습니다"
## 차트제목, 크기, 색상, 범례 등 삽입 관련

#2 범주형 데이터 수치형으로 정리하기

#2-1 job변수

table(bank2$job)

# 다음과 같이 문자열을 바꾼다.

#admin=0
#blue-collar=1 
#entrepreneur=2   
#housemaid=3   
#management=4
#retired=5
#self-employed=6     
#services=7     
#student=8   
#technician=9
#unemployed=10     
#unknown=11


library(plyr)
library(car) 
bank2$jobN<-recode(bank2$job,'"admin."=0;"blue-collar"=1;"entrepreneur"=2;"housemaid"=3;"management"=4;"retired"=5;"self-employed"=6;"services"=7;"student"=8;"technician"=9;"unemployed"=10;"unknown"=11')

#많이 실수 하는 오류
 # 작은따옴표 빼먹음, 큰따옴표 빼먹움
 # 세미콜론(;) 대신에 콤마(,)입력


#2-2결혼(martial변수)

table(bank2$marital)
#현재 샘플의 결혼상태를 본다

bank2$maritalN<-recode(bank2$marital,'"single"=0;"married"=1;"divorced"=2;"unknown"=3')
table(bank2$maritalN)

#2-3교육상태(education변수)

table(bank2$education)
bank2$educationN<-recode(bank2$education,'"illiterate"=0;"basic.4y"=1;"basic.6y"=2;"basic.9y"=3;;"high.school"=4;"illiterate"=5;"professional.course"=6;"university.degree"=7;"unknown"=8')

table(bank2$educationN)

#2-4 크레딧(credit변수)
table(bank2$default)
bank2$defaultN<-recode(bank2$default,'"no"=0;"yes"=1;"unknown"=3')
table(bank2$defaultN)

#2-5 주택융자(housing)
table(bank2$housing)
bank2$housingN<-recode(bank2$housing,'"no"=0;"yes"=1;"unknown"=3')
table(bank2$housingN)

#2-6 loan(개인대출)
table(bank2$loan)
bank2$loanN<-recode(bank2$loan,'"no"=0;"yes"=1;"unknown"=3')
table(bank2$loanN)

#2-7 Contact(연락처 통신 유형)
table(bank2$contact)
bank2$contactN<-recode(bank2$contact,'"cellular"=0;"telephone"=1')
table(bank2$contactN)

#2-8 month(연락월)
table(bank2$month)

##12달 모두 있는것이 아니다!!
bank2$monthN<-recode(bank2$month,'"jan"=1;"feb"=2;"mar"=3;"apr"=4;"may"=5;"jun"=6;"jul"=7;"aug"=8;"sep"=9;"oct"=10;"nov"=11;"dec"=12')

table(bank2$monthN)

#2-9 month(연락월)
table(bank2$day_of_week)
bank2$day_of_weekN<-recode(bank2$day_of_week,'"mon"=1;"tue"=2;"wed"=3;"thu"=4;"fri"=5')
table(bank2$day_of_weekN)


#2-10 poutcome(이전 캠페인결과)
table(bank2$poutcome)
bank2$poutcomeN<-recode(bank2$poutcome,'"failure"=0;"success"=1;"nonexistent"=2')
table(bank2$poutcomeN)


#2-11 y(정기예금 가입)
table(bank2$y)
bank2$yN<-recode(bank2$y,'"no"=0;"yes"=1')
table(bank2$yN)


#2-11 숫자로된 데이터 프레임 만들기

#상관관계 계산 시 필여한 데이터만
bank4<-data.frame(bank2$age,bank2$jobN,bank2$maritalN,bank2$educationN,bank2$defaultN,bank2$housingN,bank2$loanN,bank2$contactN,bank2$monthN,bank2$day_of_weekN,bank2$duration,bank2$campaign,bank2$poutcomeN,bank2$previous,bank2$yN)
summary(bank4)

#왜 agecat은 제외? : 20,30,40대
table(bank2$bank2.agecat)

#3-01 상관계수 구하기
cor(bank4)
bank5<-na.omit(bank4)
 #결측값 제거

#3-02 상관계수 시각화
library(corrplot)
cor(bank5)
bank5cor<-cor(bank5)
corrplot(bank5cor,method="circle")
corrplot(bank5cor,method="square")
corrplot(bank5cor,method="number")

## (질문) 이값들이 모두 타당한가?


#4-01 y와 통화량간의 상관관계

library(ggplot2)
ggplot(data=bank5, aes(x=bank2$duration, y=bank2$yN))+geom_point(aes(size=bank2$duration, color=bank2$duration))

#시간이 좀 걸립니다.
#그래프 형태가 이상합니다. 왜 그럴까요?

library(ggplot2)
pp<-ggplot(data=bank5, aes(x=bank2$duration, y=bank2$yN))+geom_point(aes(size=bank2$duration, color=bank2$duration))
pp

pp<-ggplot(data=bank5, aes(x=bank2$duration, y=bank2$yN))+geom_point(aes(size=bank2$duration, color=bank2$duration))+facet_wrap(~bank2$education)

#시간이 좀 걸립니다. (잘 안나오면 아래 것을 먼저 실행해보세요)

pp<-ggplot(data=bank5, aes(x=bank2$duration, y=bank2$yN))+geom_point(aes(size=bank2$duration, color=bank2$duration))+facet_wrap(~bank2$loan)

댓글