포스팅 목차
143. Produce the output of the EMP table “EMPLOYEE_AND_JOB” for ename and job?
* ename과 job을 연결하여서 신규 변수 “EMPLOYEE_AND_JOB”을 생성하여 출력하시오.
- 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크
- 서브쿼리 : 48 / 50
- [문자 함수] 문자열 결합 함수
- 데이터 전처리 - SQL, Pandas, R Prog, Dplyr, Dfply, SQLDF, PANDASQL, DATA.TABLE, SAS, Proc Sql
|
1. Oracle(오라클)
파이프(‘||’) 연산자를 사용하여서 사원명(Ename)과 직무(‘Job’)을 연결하여 신규 변수 ‘EMPLOYEE_JOB’를 생성하여 출력한다.
Oracle Programming |
SELECT ename,job,
ename||'_AND_'||job as emp_job_1,
concat(concat(ename,'_AND_'),job) as emp_job_2
FROM EMP
2. Python Pandas(파이썬)
연결(‘+’) 연산자를 사용하여서 사원명(Ename)과 직무(‘Job’)을 텍스트와 연결하여 신규 변수 ‘EMPLOYEE_JOB’를 생성하여 출력한다.
Python Programming |
import copy
withmooc = copy.copy(emp)
withmooc['str_combined_1'] = withmooc['ename'] +'_and_' + withmooc['job']
withmooc.head()
Results |
empno | ename | job | mgr | hiredate | sal | comm | deptno | str_combined_1 | |
0 | 7369 | SMITH | CLERK | 7902.0 | 1980/12/17 | 800 | NaN | 20 | SMITH_and_CLERK |
1 | 7499 | ALLEN | SALESMAN | 7698.0 | 1981/02/20 | 1600 | 300.0 | 30 | ALLEN_and_SALESMAN |
2 | 7521 | WARD | SALESMAN | 7698.0 | 1981/02/22 | 1250 | 500.0 | 30 | WARD_and_SALESMAN |
3 | 7566 | JONES | MANAGER | 7839.0 | 1981/04/02 | 2975 | NaN | 20 | JONES_and_MANAGER |
4 | 7654 | MARTIN | SALESMAN | 7698.0 | 1981/09/28 | 1250 | 1400.0 | 30 | MARTIN_and_SALESMAN |
3. R Programming (R Package)
paste 함수를 사용하여서 사원명(Ename)과 직무(‘Job’)을 텍스트와 연결하여 신규 변수 ‘EMPLOYEE_JOB’를 생성하여 출력한다.
R Programming |
%%R
withmooc <- emp
withmooc['EMPLOYEE_JOB'] <- paste(withmooc[['ename']],'_and_',withmooc[['job']],sep="")
withmooc[1:5, ]
Results |
# A tibble: 5 x 10
empno ename job mgr hiredate sal comm deptno salary EMPLOYEE_JOB
<dbl> <chr> <chr> <dbl> <date> <dbl> <dbl> <dbl> <chr> <chr>
1 7369 SMITH CLERK 7902 1980-12-17 800 NA 20 $920 SMITH_and_CLERK
2 7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30 $1,840 ALLEN_and_SALESMAN
3 7521 WARD SALESMAN 7698 1981-02-22 1250 500 30 $1,438 WARD_and_SALESMAN
4 7566 JONES MANAGER 7839 1981-04-02 2975 NA 20 $3,421 JONES_and_MANAGER
5 7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30 $1,438 MARTIN_and_SALESMAN
4. R Dplyr Package
stringi::stri_join() 함수를 사용하여서 사원명(Ename)과 직무(‘Job’)을 텍스트와 연결하여 신규 변수 ‘EMPLOYEE_JOB’를 생성하여 출력한다.
R Programming |
%%R
library(formattable)
library(scales)
withmooc <- emp
withmooc %>%
dplyr::mutate(EMPLOYEE_JOB = stringi::stri_join(ename,'_and_',job,sep="")) %>%
head()
Results |
# A tibble: 6 x 10
empno ename job mgr hiredate sal comm deptno salary EMPLOYEE_JOB
<dbl> <chr> <chr> <dbl> <date> <dbl> <dbl> <dbl> <chr> <chr>
1 7369 SMITH CLERK 7902 1980-12-17 800 NA 20 $920 SMITH_and_CLERK
2 7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30 $1,840 ALLEN_and_SALESMAN
3 7521 WARD SALESMAN 7698 1981-02-22 1250 500 30 $1,438 WARD_and_SALESMAN
4 7566 JONES MANAGER 7839 1981-04-02 2975 NA 20 $3,421 JONES_and_MANAGER
5 7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30 $1,438 MARTIN_and_SALESMAN
6 7698 BLAKE MANAGER 7839 1981-03-01 2850 NA 30 $3,278 BLAKE_and_MANAGER
5. R sqldf Package
파이프(‘||’) 연산자를 사용하여서 사원명(Ename)과 직무(‘Job’)을 연결하여 신규 변수 ‘EMPLOYEE_JOB’를 생성하여 출력한다.
R Programming |
%%R
sqldf(" SELECT ename||'_AND_'||job AS EMPLOYEE_JOB
FROM emp ") %>% head()
Results |
EMPLOYEE_JOB
1 SMITH_AND_CLERK
2 ALLEN_AND_SALESMAN
3 WARD_AND_SALESMAN
4 JONES_AND_MANAGER
5 MARTIN_AND_SALESMAN
6 BLAKE_AND_MANAGER
6. Python pandasql Package
파이프(‘||’) 연산자를 사용하여서 사원명(Ename)과 직무(‘Job’)을 연결하여 신규 변수 ‘EMPLOYEE_JOB’를 생성하여 출력한다.
Python Programming |
ps.sqldf(" SELECT ename||'_AND_'||job AS EMPLOYEE_JOB FROM emp ").head()
Results |
EMPLOYEE_JOB | |
0 | SMITH_AND_CLERK |
1 | ALLEN_AND_SALESMAN |
2 | WARD_AND_SALESMAN |
3 | JONES_AND_MANAGER |
4 | MARTIN_AND_SALESMAN |
7. R data.table Package
stringi::stri_join() 함수를 사용하여서 사원명(Ename)과 직무(‘Job’)을 텍스트와 연결하여 신규 변수 ‘EMPLOYEE_JOB’를 생성하여 출력한다. 사용자가 지정한 변수명 리스트에 NULL을 지정하여서 출력 결과에 변수를 삭제한다.
R Programming |
%%R
DT <- data.table(emp)
DT[, EMPLOYEE_JOB := stringi::stri_join(ename,'_and_',job,sep="")][1:5, ][,c("job","hiredate","salary"):=NULL ]
Results |
empno ename mgr sal comm deptno EMPLOYEE_JOB
1: 7369 SMITH 7902 800 NA 20 SMITH_and_CLERK
2: 7499 ALLEN 7698 1600 300 30 ALLEN_and_SALESMAN
3: 7521 WARD 7698 1250 500 30 WARD_and_SALESMAN
4: 7566 JONES 7839 2975 NA 20 JONES_and_MANAGER
5: 7654 MARTIN 7698 1250 1400 30 MARTIN_and_SALESMAN
stringi::stri_join() 함수를 사용하여서 사원명(Ename)과 직무(‘Job’)을 텍스트와 연결하여 신규 변수 ‘EMPLOYEE_JOB’를 생성하여 출력한다. NOT 연산자(‘!’)를 사용하여서 삭제될 변수를 지정한다.
R Programming |
%%R
DT <- data.table(emp)
DT[, EMPLOYEE_JOB := stringi::stri_join(ename,'_and_',job,sep="")][1:5, ][,!c("job","hiredate","salary") ]
Results |
empno ename mgr sal comm deptno EMPLOYEE_JOB
1: 7369 SMITH 7902 800 NA 20 SMITH_and_CLERK
2: 7499 ALLEN 7698 1600 300 30 ALLEN_and_SALESMAN
3: 7521 WARD 7698 1250 500 30 WARD_and_SALESMAN
4: 7566 JONES 7839 2975 NA 20 JONES_and_MANAGER
5: 7654 MARTIN 7698 1250 1400 30 MARTIN_and_SALESMAN
8. SAS Proc SQL
파이프(‘||’) 연산자 및 Cats() 함수를 사용하여서 사원명(Ename)과 직무(‘Job’)을 연결하여 신규 변수 ‘EMPLOYEE_JOB’를 생성하여 출력한다.
SAS Programming |
%%SAS sas
PROC SQL;
create table STATSAS_1 as
select empno,ename,job,
STRIP(ename)||'_and_'||STRIP(job) as emp_job_1,
cats(ename,'_and_',job) as emp_job_2
from emp;
QUIT;
PROC PRINT data=STATSAS_1(obs=3);RUN;
Results |
OBS | empno | ename | job | emp_job_1 | emp_job_2 |
1 | 7369 | SMITH | CLERK | SMITH_and_CLERK | SMITH_and_CLERK |
2 | 7499 | ALLEN | SALESMAN | ALLEN_and_SALESMAN | ALLEN_and_SALESMAN |
3 | 7521 | WARD | SALESMAN | WARD_and_SALESMAN | WARD_and_SALESMAN |
9. SAS Data Step
SAS Programming |
%%SAS sas
data STATSAS_2;
set emp;
emp_job_1 = STRIP(ename)||'_and_'||STRIP(job);
emp_job_2 = cats(ename,'_and_',job);
keep empno ename job emp_:;
run;
PROC PRINT data=STATSAS_2(obs=3);RUN;
Results |
OBS | empno | ename | job | emp_job_1 | emp_job_2 |
1 | 7369 | SMITH | CLERK | SMITH_and_CLERK | SMITH_and_CLERK |
2 | 7499 | ALLEN | SALESMAN | ALLEN_and_SALESMAN | ALLEN_and_SALESMAN |
3 | 7521 | WARD | SALESMAN | WARD_and_SALESMAN | WARD_and_SALESMAN |
10. Python Dfply Package
Python Programming |
emp >> \
mutate( EMPLOYEE_JOB = X.ename +'_and_' + X.job ) >> \
select( ~X.job, ~X.hiredate ) >> \
head()
Results |
empno | ename | mgr | sal | comm | deptno | EMPLOYEE_JOB | |
0 | 7369 | SMITH | 7902.0 | 800 | NaN | 20 | SMITH_and_CLERK |
1 | 7499 | ALLEN | 7698.0 | 1600 | 300.0 | 30 | ALLEN_and_SALESMAN |
2 | 7521 | WARD | 7698.0 | 1250 | 500.0 | 30 | WARD_and_SALESMAN |
3 | 7566 | JONES | 7839.0 | 2975 | NaN | 20 | JONES_and_MANAGER |
4 | 7654 | MARTIN | 7698.0 | 1250 | 1400.0 | 30 | MARTIN_and_SALESMAN |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 전처리 방법 리스트
댓글