ch0nny_log

[빅데이터분석] R _ 22. 그룹함수 MAX / MIN 본문

빅데이터 분석(with 아이티윌)/R

[빅데이터분석] R _ 22. 그룹함수 MAX / MIN

chonny 2024. 6. 28. 10:09
★ [2024년 6월 28일 점심시간 문제]  


아래의 SQL을 R 로 구현하시오 !

1)SQL
select  ename, sal, job
         from emp
        where  job='SALESMAN'  and  sal > 800
         order  by  sal  desc;

현직 데이터 분석가로 일하고 있는 선배 기수가 입사지원시 면접장에서 받았던 쪽지시험 문제 예시입니다.

2) R

a <- emp[(emp$job == 'SALESMAN') & (emp$sal > 800), c('ename', 'sal', 'job')]

a
str(a)
a[order(a$sal, decreasing = T),c('ename','sal','job')]​

 

 


 

※ 그룹함수
SQL VS R
MAX MAX
MIN MIN
SUM SUM
AVG MEAN
COUNT LENGTH(세로)
TABLE(가로) 

■ max

max(값 칼럼명)
문제 1. 사원테이블에서 최대 월급을 출력하시오.
1) SQL
select max(sal)
	from emp;​

2) R

 max(emp$sal)
문제 2. 직업이 salesman 인 사원들의 최대월급을 출력하시오. 
1) SQL
select max(sal)
	from emp
    where job='SALESMAN';​

2) R

a <-emp[emp$job=='SALESMAN',c('sal')]
max(a)

■ group by 

aggregate(값 칼럼명 ~그룹핑할 칼럼명, 테이블명, 그룹함수)
문제 3. 부서번호, 부서번호별 최대월급을 출력하시오.
1) SQL
select deptno, max(sal)
  from emp
  group by deptno;​

2) R
  aggregate(sal~deptno,emp,max)​

 

■ 칼럼이름 변경

aggregate(값 칼럼명 ~그룹핑할 칼럼명, 테이블명, 그룹함수)
  x <- aggregate(sal~deptno,emp,max)
names(x) <- c('job','maxsal') #컬럼 이름 변경하기​
문제 1. 직업, 직업별 토털이름을 출력하시오.
1) SQL
select job, sum(sall)
	from emp
    group by job;​

2) R
 x <- aggregate(sal~job,emp,max)
names(x) <- c('job','maxsal') #컬럼 이름 변경하기
x​

■ MIN

문제 1. 직업, 직업별 최소월 급을 출력하시오.
1) SQL
select job,min(sal)
	from emp
    group by job,​

2) R

 x <- aggregate(sal~job,emp,min)
names(x) <- c('직업','최소월급급') #컬럼 이름 변경하기
x
문제 2. 부서번호, 부서번호별 최소월급을 출력하는데 부서번호별 최소월급이 높은 것부터 출력하시오.
1) SQL
select deptno, min(sal)
	from emp
    group by deptno
    order by min(sal) desc;​
2) R
 x <- aggregate(sal~deptno,emp,min)
 names(x) <- c('부서번호','최소월급') #컬럼 이름 변경하기
 library(doBy)
 orderBy(~-최소월급,x)​

※ SQL(to_char ( 칼럼명, '999,999') -> formax( 칼럼명, , big.mark = ', ', scientific = F)

x$최소월급 <- format(x$최소월급,big.mark = ',',scientific = F)
print(x)

설명: scientific=F는 1e +03(1000을 의미)으로 출력되는 것을 방지하기 위해서 사용한 옵션임.  (지수 표기법)

0.000000000000001 <- 아주작은숫자 / 100000000000001 <- 아주 큰 숫자 를 표현할 때 '지수 표기법'이 유용