Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- loop 문
- count
- 총과 카드만들기
- 빅데이터분석
- difftime
- 단순회귀 분석
- 히스토그램 그리기
- 막대그래프
- 불순도제거
- %in%
- 데이터분석가
- 상관관계
- 회귀분석
- max
- 회귀분석 알고리즘
- 그래프 생성 문법
- merge
- 순위출력
- if문 작성법
- 팀스파르타
- 그래프시각화
- sql
- 여러 데이터 검색
- 정보획득량
- 데이터분석
- 빅데이터
- Sum
- sqld
- Intersect
- Dense_Rank
Archives
- Today
- Total
ch0nny_log
[빅데이터분석] R _ 21. 일반함수(ifelse) 본문
ifelse (조건, 바꿀값, 기본값)
- 조건이 true = 바꿀값 출력
- 조건이 FALSE = 기본값 출력
SQL | VS | R |
nvl | ifelse | |
decode | ifelse | |
case | ifelse |
■ NVL
문제1. 이름과 커미션을 출력하는데 커미션이 null 인 사원들은 0으로 출력하시오.
1) SQL
2) Rselect enams, nvl(comm,0) from emp;
## 파생컬럼 emp$comm_zero 추가 하여 null을 0으로 치환
emp$comm_zero <- ifelse(is.na(emp$comm),0,emp$comm) emp
설명: ifelse(조건, 바꿀값, 기본값)
문제2. titanic2.csv 를 가지고 tat 라는 데이터 프레임을 만드시오 !
tat<- read.csv('tatanic2.csv',header = T) colSums(is.na(tat))
문제3. AGE2 라는 컬럼을 생성하는데 TAT의 AGE컬럼으로 데이터를 만들고 결측치는 31로 채워서 넣으시오.
tat$age2 <- ifelse(is.na(tat$age), 31, tat$age ) tat
※ 현업 팁 ! 삼성전자의 전자 제품 다음달 예상 판매량 예측하는 모델을 만드는 이한웅(8기) 데이터 분석가의 코드에 ifelse 를 이용해서 파생변수를 생성하는 코드로 가득차 있습니다. 데이터 분석가들 끼리 회의를 할 때 결측치에
어떤 값을 채워넣을지를 항상 연구하고 어떤 파생변수를 생각해낼지를 연구하는데 신입 데이터 분석가의 조언도 굉장히 유심히 듣는다고 합니다.
■ decode
문제1. 이름, 부서번호, 보너스를 출력하는데 부서번호가 10번이면 5000을 출력하고 그렇지 않고 20번이면 4000을 출력하시고 나머지 부서는 0으로 출력하시오
1) SQL
2) Rselect ename, deptno, decode(deptno,10,5000, 20,4000, 0) 보너스 from emp;
emp$bonus <- ifelse( emp$deptno==10, 5000, ifelse( emp$deptno==20, 4000,0) ) emp[ , c("ename", "deptno", "bonus") ]
■ CASE
문제1. 이름, 월급, 등급을 출력하는데 월급이 3000이상이면 A, 2000이상 3000이하이면 B을 출력, 나머지는 C를 출력하시오.
1) SQL
2) Rselect ename,sal,case when sal >= 3000 then 'A' sal >= 3000 then 'B' else 'C' end 등급 from emp;
emp$grade <- ifelse(emp$sal >= 3000,'A',ifelse(emp$sal >=2000,'B','C')) emp[ , c("ename", "grade") ]
문제 2. tat 데이터 프레임에 women_child 파생변수를 추가하는데 성별이 여자이거나 나이가 12이하면 1로 만들고
아니면 0으로 값을 만드시오.
tat$women_child <- ifelse( (tat$sex=='female') | (tat$age2 <=12 ), 1, 0) tat$women_child table(tat$women_child)
문제 3. sql 포트폴리오에서 마들었던 테이블을 r데이터 프레임으로 생성하고 지금까지 배운 내용으로 조회할 수 있는 간단한 검색문제를 스스로 내서 r로 작성하고 출력하시오.
setwd("c:\\data") birth_table2 <- read.csv("birth_table2.csv",header=T ,fileEncoding="euc-kr") birth_table2 birth_rank <- birth_table2[order(birth_table2$b_cnt, decreasing = TRUE), c('b_district', 'b_cnt')] head(birth_rank, 10)
'빅데이터 분석(with 아이티윌) > R' 카테고리의 다른 글
[빅데이터분석] R _ 23. 그룹함수 LENGTH(세로)/TABLE(가로)/원형그래프) (0) | 2024.06.28 |
---|---|
[빅데이터분석] R _ 22. 그룹함수 MAX / MIN (0) | 2024.06.28 |
[빅데이터분석] R _ 20. 데이터 변환 함수 (0) | 2024.06.27 |
[빅데이터분석] R _ 19. 날짜연산 (0) | 2024.06.27 |
[빅데이터분석] R _ 18. 나누기 함수 (SQL-TRUC함수) (0) | 2024.06.27 |