#---------
# 은행마케팅 데이터를 사용한 연습문제 예제
bnk01 <- read.csv("https://t1.daumcdn.net/cfile/blog/99721B3359B3C43711?download")
# 컬럼 선택
# job과 marital 만으로 구성된 데이터프레임 (부분집합)을 생성하라
bnk0101 <- bnk01[,c("job", "marital")]
head(bnk0101)
# 행 선택
# marital의 값이 married인 고객만을 추출하여 부분집합을 생성하라
bnk0102 <- bnk01[bnk01$marital=="married",]
head(bnk0102)
# 잔고가 $20K 보다 큰 사람 몇명?
nrow(bnk01[bnk01$balance>200000,])
# 잔고 분포 확인
plot(sort(bnk01$balance))
range(bnk01$balance)
# 잔고가 $1K 보다 보다 작은 사람 몇명?
nrow(bnk01[bnk01$balance<1000,])
# 여성으로 30세이상 고객 몇명?
# == 성별변수 없음 == 계산 불가
# 대출이 있는 사람중 20대의 잔고 평균은 ?
mean(bnk01[bnk01$loan=="yes" & bnk01$age>=20 & bnk01$age<=29,]$balance)
bnk01tmp <- bnk01[bnk01$loan=="yes" & bnk01$age>=20 & bnk01$age<=29,]
mean(bnk01tmp$balance)
# 마케팅 성공한 사람들의 연령 평균은?
mean(bnk01[bnk01$y=="yes",]$age)
# 마케팅에 반응하지 않은 고객들의 잔고 평균은?
mean(bnk01[bnk01$y=="no",]$balance)
# 반대 집단의 값
# mean(bnk01[bnk01$y=="yes",]$balance)
# data type 데이터 형식 변환
# 마케팅 성공여부인 y의 형식을 {0, 1}로 변경하라
bnk01tmp <- bnk01
bnk01tmp$y1 <- ifelse(bnk01tmp$y=="yes",1,0)
table(bnk01tmp[,c("y","y1")])
# 연령대를 10대 단위로 변환하라
# 10대 단위로 구분된 값으로 가지는 새로운 변수를 생성하여 추가
bnk01tmp <- bnk01
bnk01tmp$age_grp <- as.character(as.integer(bnk01tmp$age/10))
head(bnk01tmp[bnk01tmp$age_grp=="5",])
# paste와 substr 활용
# 직업의 앞 세자리만 추출해 job_kd 라는 변수로 저장하라
bnk01tmp <- bnk01
bnk01tmp$job_kd <- substr(bnk01tmp$job,1,3)
head(bnk01tmp)
'R 데이터 분석' 카테고리의 다른 글
[R분석] rolling base stat generator for time series data (0) | 2018.05.01 |
---|---|
[CRMAJU2018] R 프로그래밍 기초 복습 -- 2018.04.25 (0) | 2018.04.23 |
[CRMAJU2018] --- R 데이터 분석 연습문제 [2] (0) | 2018.04.16 |
CRMAJU2018] --- R 데이터 처리 기초 연습문제 [1] 후보답안 (0) | 2018.04.12 |
[CRMAJU2018] --- R 데이터 처리 기초 연습문제 [1] (0) | 2018.04.06 |