포스팅 목차
68. Display the name of the employee concatenate with EMP no.
* 사원번호와 직원의 이름을 연결(결합)하여 출력하시오.
- 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크
- [문자 함수] 문자열 결합(||) & 문자열 연결
|
1. Oracle(오라클)
- 파이프 연산자를 사용하여서 사원 이름과 사원번호를 결합한다.
Oracle Programming |
select ename,empno,
ename||empno ename_concat
from emp;
Oracle Programming |
select concat(ename,empno) ename_concat
from emp;
2. Python Pandas(파이썬)
- stackoverflow : https://stackoverflow.com/questions/19377969/combine-two-columns-of-text-in-pandas-dataframe
- format 함수를 사용하여서 사원이름과 사원번호를 결합하여 출력한다.
Python Programming |
withmooc[['ename', 'empno']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1).head()
Results |
0 SMITH7369
1 ALLEN7499
2 WARD7521
3 JONES7566
4 MARTIN7654
dtype: object
- 다양한 문자열 결합 방식으로 2개 문자열을 결합하여 출력 할수 있다.
Python Programming |
withmooc['str_combined_1'] = withmooc['ename'] + withmooc['empno'].astype(str)
withmooc['str_combined_2'] = withmooc['ename'].str.cat(withmooc['empno'].values.astype(str), sep='')
withmooc['str_combined_3'] = withmooc[['ename', 'empno']].astype(str).agg(''.join, axis=1)
withmooc['str_combined_4'] = withmooc[['ename', 'empno']].apply(lambda x: ''.join(x.astype(str)), axis=1)
withmooc['str_combined_5'] = emp[['ename','empno']].astype(str).sum(axis=1)
withmooc['str_combined_6'] = emp.loc[:, ['ename','empno']].astype(str).sum(axis=1)
withmooc['str_combined_7'] = withmooc[['ename', 'empno']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
withmooc.drop(['mgr','hiredate','sal','comm','deptno','job'],axis=1).head()
Results |
empno | ename | str_combined_1 | str_combined_2 | str_combined_3 | str_combined_4 | str_combined_5 | str_combined_6 | str_combined_7 | |
0 | 7369 | SMITH | SMITH7369 | SMITH7369 | SMITH7369 | SMITH7369 | SMITH7369 | SMITH7369 | SMITH7369 |
1 | 7499 | ALLEN | ALLEN7499 | ALLEN7499 | ALLEN7499 | ALLEN7499 | ALLEN7499 | ALLEN7499 | ALLEN7499 |
2 | 7521 | WARD | WARD7521 | WARD7521 | WARD7521 | WARD7521 | WARD7521 | WARD7521 | WARD7521 |
3 | 7566 | JONES | JONES7566 | JONES7566 | JONES7566 | JONES7566 | JONES7566 | JONES7566 | JONES7566 |
4 | 7654 | MARTIN | MARTIN7654 | MARTIN7654 | MARTIN7654 | MARTIN7654 | MARTIN7654 | MARTIN7654 | MARTIN7654 |
3. R Programming (R Package)
- paste 함수 또는 paste0 함수를 사용하여서 2개 문자열을 결합하여 출력한다.
R Programming |
%%R
withmooc <- emp
withmooc['str_comb_1'] <- paste(withmooc[['ename']],withmooc[['empno']],sep="")
withmooc['str_comb_2'] <- paste0(withmooc[['ename']],'', withmooc[['empno']])
head(withmooc)
Results |
# A tibble: 6 x 10
empno ename job mgr hiredate sal comm deptno str_comb_1 str_comb_2
<dbl> <chr> <chr> <dbl> <date> <dbl> <dbl> <dbl> <chr> <chr>
1 7369 SMITH CLERK 7902 1980-12-17 800 NA 20 SMITH7369 SMITH7369
2 7499 ALLEN SALESM… 7698 1981-02-20 1600 300 30 ALLEN7499 ALLEN7499
3 7521 WARD SALESM… 7698 1981-02-22 1250 500 30 WARD7521 WARD7521
4 7566 JONES MANAGER 7839 1981-04-02 2975 NA 20 JONES7566 JONES7566
5 7654 MARTIN SALESM… 7698 1981-09-28 1250 1400 30 MARTIN7654 MARTIN7654
6 7698 BLAKE MANAGER 7839 1981-03-01 2850 NA 30 BLAKE7698 BLAKE7698
4. R Dplyr Package
- tidyr::unite, stringi::stri_join 또는 stringr::str_c 등의 함수를 사용하여서 문자열을 결합하여 출력한다.
R Programming |
%%R
library(stringi)
emp %>%
tidyr::unite(str_comb_1, ename, empno, sep = "", remove = FALSE) %>%
dplyr::mutate(str_comb_2 = stringi::stri_join(ename,empno,sep="")) %>%
dplyr::mutate(str_comb_3 = stringr::str_c(ename,empno,sep="")) %>%
dplyr::mutate(str_comb_4 = base::paste(ename,empno,sep="")) %>%
dplyr::mutate(str_comb_5 = base::paste0(ename,"",empno)) %>%
dplyr::select(-(job:deptno)) %>%
head()
Results |
# A tibble: 6 x 7
str_comb_1 empno ename str_comb_2 str_comb_3 str_comb_4 str_comb_5
<chr> <dbl> <chr> <chr> <chr> <chr> <chr>
1 SMITH7369 7369 SMITH SMITH7369 SMITH7369 SMITH7369 SMITH7369
2 ALLEN7499 7499 ALLEN ALLEN7499 ALLEN7499 ALLEN7499 ALLEN7499
3 WARD7521 7521 WARD WARD7521 WARD7521 WARD7521 WARD7521
4 JONES7566 7566 JONES JONES7566 JONES7566 JONES7566 JONES7566
5 MARTIN7654 7654 MARTIN MARTIN7654 MARTIN7654 MARTIN7654 MARTIN7654
6 BLAKE7698 7698 BLAKE BLAKE7698 BLAKE7698 BLAKE7698 BLAKE7698
5. R sqldf Package
- 파이프 연산자를 사용하여서 사원 이름과 사원번호를 결합한다.
R Programming |
%%R
sqldf("select ename||empno from emp") %>% head()
Results |
ename||empno
1 SMITH7369.0
2 ALLEN7499.0
3 WARD7521.0
4 JONES7566.0
5 MARTIN7654.0
6 BLAKE7698.0
6. Python pandasql Package
- 파이프 연산자를 사용하여서 사원 이름과 사원번호를 결합한다.
Python Programming |
ps.sqldf("select ename||empno concat from emp").head()
Results |
concat | |
0 | SMITH7369 |
1 | ALLEN7499 |
2 | WARD7521 |
3 | JONES7566 |
4 | MARTIN7654 |
7. R data.table Package
- base::paste 또는 stringr::str_c 함수를 사용하여서 문자열을 결합하여 출력한다.
R Programming |
%%R
DT <- data.table(emp)
DT[, ':='( str_combined_1 = base::paste(ename,empno,sep="") , str_combined_2 = stringr::str_c(ename,empno,sep="") ) ][1:7, ][,-c("hiredate","job")]
Results |
empno ename mgr sal comm deptno str_combined_1 str_combined_2
1: 7369 SMITH 7902 800 NA 20 SMITH7369 SMITH7369
2: 7499 ALLEN 7698 1600 300 30 ALLEN7499 ALLEN7499
3: 7521 WARD 7698 1250 500 30 WARD7521 WARD7521
4: 7566 JONES 7839 2975 NA 20 JONES7566 JONES7566
5: 7654 MARTIN 7698 1250 1400 30 MARTIN7654 MARTIN7654
6: 7698 BLAKE 7839 2850 NA 30 BLAKE7698 BLAKE7698
7: 7782 CLARK 7839 2450 NA 10 CLARK7782 CLARK7782
8. SAS Proc SQL
- 파이프 연산자 또는 cat/cats 함수를 사용하여서 사원 이름과 사원번호를 결합한다.
SAS Programming |
%%SAS sas
PROC SQL;
CREATE TABLE STATSAS_1 AS
select ename||put(empno,8.) as emp_concat_1,
trim(ename)||trim(left(put(empno,8.))) as emp_concat_2,
trim(ename)||compress(put(empno,8.)) as emp_concat_3,
cat(ename,empno) as emp_cat,
cats(ename,empno) as emp_cats
from emp;
QUIT;
PROC PRINT data=STATSAS_1(obs=3);RUN;
Results |
OBS | emp_concat_1 | emp_concat_2 | emp_concat_3 | emp_cat | emp_cats |
1 | SMITH 7369 | SMITH7369 | SMITH7369 | SMITH 7369 | SMITH7369 |
2 | ALLEN 7499 | ALLEN7499 | ALLEN7499 | ALLEN 7499 | ALLEN7499 |
3 | WARD 7521 | WARD7521 | WARD7521 | WARD 7521 | WARD7521 |
9. SAS Data Step
- 파이프 연산자 또는 cat/cats 함수를 사용하여서 사원 이름과 사원번호를 결합한다.
SAS Programming |
%%SAS sas
DATA STATSAS_2;
SET emp;
emp_concat_1 = ename||put(empno,8.);
emp_concat_2 = trim(ename)||trim(left(put(empno,8.)));
emp_concat_3 = trim(ename)||compress(put(empno,8.));
emp_cat = cat(ename,empno);
emp_cats = cats(ename,empno);
keep ename empno emp_:;
RUN;
PROC PRINT data=STATSAS_2(obs=3);RUN;
Results |
OBS | empno | ename | emp_concat_1 | emp_concat_2 | emp_concat_3 | emp_cat | emp_cats |
1 | 7369 | SMITH | SMITH 7369 | SMITH7369 | SMITH7369 | SMITH 7369 | SMITH7369 |
2 | 7499 | ALLEN | ALLEN 7499 | ALLEN7499 | ALLEN7499 | ALLEN 7499 | ALLEN7499 |
3 | 7521 | WARD | WARD 7521 | WARD7521 | WARD7521 | WARD 7521 | WARD7521 |
10. Python Dfply Package
- '+' 연산자 또는 cat() 함수를 사용하여서 사원 이름과 사원번호를 결합한다.
Python Programming |
emp >> \
mutate( str_comb_1 = X.ename + X.empno.astype(str),
str_comb_2 = X.ename.str.cat(X.empno.values.astype(str), sep='') ) >> \
select(~X.hiredate,~X.job,~X.comm) >> head()
Results |
empno | ename | mgr | sal | deptno | str_comb_1 | str_comb_2 | |
0 | 7369 | SMITH | 7902.0 | 800 | 20 | SMITH7369 | SMITH7369 |
1 | 7499 | ALLEN | 7698.0 | 1600 | 30 | ALLEN7499 | ALLEN7499 |
2 | 7521 | WARD | 7698.0 | 1250 | 30 | WARD7521 | WARD7521 |
3 | 7566 | JONES | 7839.0 | 2975 | 20 | JONES7566 | JONES7566 |
4 | 7654 | MARTIN | 7698.0 | 1250 | 30 | MARTIN7654 | MARTIN7654 |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트
반응형
'통계프로그램 비교 시리즈 > 프로그래밍비교(Oracle,Python,R,SAS)' 카테고리의 다른 글
[데이터 전처리- 문자함수 예제] 기준 문자열에서 특정 문자 검색 - 70 (0) | 2021.08.30 |
---|---|
[데이터 전처리- 문자함수 예제] 문자열 절단 함수를 사용하여 문자열 자르기 - 69 (0) | 2021.08.27 |
[데이터 전처리- 문자함수 예제] 문자 길이 합계 계산 - 67 (0) | 2021.08.27 |
[데이터 전처리- 문자함수 예제] 문자 길이 측정 방식 비교 - 66 (0) | 2021.08.24 |
[데이터 전처리- 문자함수 예제] 문자 proper case 문자로 변환 방식 비교 - 65 (0) | 2021.08.24 |
댓글