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 |
Tags
- 단순회귀 분석
- count
- 히스토그램 그리기
- %in%
- 빅데이터분석
- Sum
- 데이터분석
- loop 문
- 그래프시각화
- 불순도제거
- 빅데이터
- 총과 카드만들기
- 정보획득량
- 순위출력
- merge
- sqld
- Dense_Rank
- sql
- 데이터분석가
- 회귀분석
- Intersect
- difftime
- if문 작성법
- 그래프 생성 문법
- 회귀분석 알고리즘
- 막대그래프
- 팀스파르타
- max
- 상관관계
- 여러 데이터 검색
Archives
- Today
- Total
ch0nny_log
[빅데이터분석] R _ 27. EQUI JOIN/OUTER JOIN/SELF JOIN 본문
SQL | VS | R |
equi join | merge | |
non equi join | ||
outer join | ||
self join |
■ EQUI JOIN
문제1. dept.csv 를 내려받아 dept 데이터 프레임을 생성하시오
dept <-read.csv('dept.csv',header = T) dept
문제2. 이름과 부서위치를 출력하시오.
1) SQL
2) Rselect e.ename , d.loc from emp e, dept d where e.empno =d.deptno;
merge(emp, dept,by='deptno') #두 테이블을 merge 하여 보기
답)
x<-merge(emp, dept,by='deptno') #두 테이블을 merge 하여 보기 x [ ,c('ename','loc')]
문제3. 근무 위치가 dallas에서 근무하는 이름,월급, 부서위치를 출력하시오/.
x <-merge(emp, dept,by='deptno') #두 테이블을 merge 하여 보기 x[x$loc == 'DALLAS',c('ename','sal','loc')]
문제 4. 커미션이 NULL 인사원들의 이름, 부서위치와 커미션을출력하시오
x <-merge(emp, dept,by='deptno') x[is.na(x$comm),c('ename','loc')]
■ OUTER JOIN
문제1. 아래의 OUTER JOIN SQL을 R로 구현하시오.
1) SQL
select e.ename, d.loc from emp e, dept d where e.deptno(+) = d.empno;
2) R
x<- merge(emp, dept, by = 'deptno', all.y = TRUE) x [ , c("ename", "loc") ] ## x= emp /y=dept -> all.y = y에 있는 데이터가 모두나오게 해라
문제2. 아래의 sql의 결과를 r로 구현해라.
1) SQL
select e.ename, d.loc from emp e, dept d where e.deptno = d.deptno (+);
2) R
x<- merge(emp, dept, by = 'deptno', all.x = TRUE) x [ , c("ename", "loc") ]
문제 3. 아래 SQL을 R로 구현하시오.
1) SQL
2) Rselect e.ename, d.loc from emp e full outer join dept d on ( e.deptno = d.deptno );
x <- merge( emp, dept, by="deptno", all=T ) x[ , c("ename", "loc") ]
■ SELF JOIN
문제1. 아래의 SQL을 R로 구현하시오
1) SQL
2) Rselect 사원.ename, 관리자.ename from emp 사원, emp 관리자 where 사원.mgr = 관리자.empno;
x<-merge(emp,emp, by.x='mgr',by.y='empno') x[ , c("ename.x", "ename.y") ]
문제2. 아래의 SQL을 R 로 구현하시오 !
1) SQL
select 사원.ename, 관리자.ename from emp 사원, emp 관리자 where 사원.mgr = 관리자.empno and 사원.sal > 관리자.sal ;
2) R
x[x$sal.x >x$sal.y, c('ename.x','ename.y')]
문제3. 사원 이름과 직속상사의 이름을 가지고 사원 테이블의 조직도를 시각화하시오,
1) igraph 설치
install.packages('igraph') library(igraph)
2)
x <- merge( emp, emp, by.x="mgr", by.y="empno") a <- x[ , c( "ename.x", "ename.y") ] a b <- graph.data.frame( a, directed=T ) plot(b)
문제 4. 위의 그래프를 구글 goolevis를 이용해서 시각화 하시오.
install.packages("googleVis") library(googleVis) a <- merge(emp,emp, by.x="empno",by.y="mgr", all.y=T) org <- gvisOrgChart(a, idvar="ename.y",parentvar="ename.x", options=list(width=600, height=250, size='middle', allowCollapse=T)) plot(org)
설명: width=600 : 조직도 그래프의 너비를 600 픽셀로 지정
height=250 : 조직도 그래프의 높이를 250 픽셀로 지정
size='middle' : 조직도 그래프의 노드의 크기를 중간으로 지정 (small, large)
allowCollapse=T : 조직도 그래프에서 노드를 클릭하여 해당 하위노드를 숨기거나
표시할 수 있게 허용하겠다.
문제 5. 부서위치, 부서위치별 토탈월급을 출력하시오.
1) SQL
select d.loc, dum(e.sal) from emp e, dept d where e.deptno =d.deptno group bt d.loc;
2) R (세로 출력)
x <- merge( emp, dept, by="deptno", all=T) aggregate( x$sal ~ x$loc, x, sum, na.action=na.pass)
## na.action에 대한 기본값은 na.omit인데 이는 na값을 포함하는 행을 제외합니다.
## na.pass값은 na 값을 그대로 유지하도록함.
3) R(가로출력)
x <- merge( emp, dept, by="deptno", all=T) tapply( x$sal,x$loc, sum)
문제 6. 위 문제를 막대그래프로 시각화 하시오
x2<-tapply( x$sal,x$loc, sum) barplot(x2,col=rainbow(4))
문제 7. sql 포폴에서 했던 데이터를 이용해서오늘 배운내용으로 간단하게 시각화 하시오.
'빅데이터 분석(with 아이티윌) > R' 카테고리의 다른 글
[빅데이터분석] R _ 29. 집합연산(rbind, rbind + unique,intersect,setdiff) (1) | 2024.07.01 |
---|---|
[빅데이터분석] R _ 28. Google Colab (1) | 2024.07.01 |
[빅데이터분석] R _ 26. GROUP BY절 두개의 컬럼 사용 (0) | 2024.06.28 |
[빅데이터분석] R _ 25. 그룹함수 MEAN (0) | 2024.06.28 |
[빅데이터분석] R _ 24. 그룹함수 SUM (0) | 2024.06.28 |