68. Display the name of the employee concatenate with EMP no.
* 사원번호와 직원의 이름을 연결(결합)하여 출력하시오.
Oracle : 파이프(||) 연산자, concat() 함수
파이썬 Pandas : apply(), lambda 함수, .format(), + 연산자, .str.cat, .join, lambda 함수,
R 프로그래밍 : paste(), paste0()
R Dplyr Package : tidyr::unite(), stringi::stri_join(), stringr::str_c(), base::paste(), base::paste0()
R sqldf Package : 파이프(||) 연산자
Python pandasql Package : 파이프(||) 연산자
R data.table Package : base::paste(), stringr::str_c()
SAS Proc SQL : 파이프(||) 연산자, cat() 함수, Cats() 함수
SAS Data Step : 파이프(||) 연산자, cat() 함수, Cats() 함수
Python Dfply Package : + 연산자, .str.cat, mutate()
파이썬 Base 프로그래밍 :
1. Oracle(오라클)
파이프 연산자를 사용하여서 사원 이름과 사원번호를 결합한다.
select ename,empno,
ename||empno ename_concat
from emp;
select concat(ename,empno) ename_concat
from emp;
2. Python Pandas(파이썬)
withmooc[['ename', 'empno']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1).head()
0 SMITH7369
1 ALLEN7499
2 WARD7521
3 JONES7566
4 MARTIN7654
dtype: object
다양한 문자열 결합 방식으로 2개 문자열을 결합하여 출력 할수 있다.
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()
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
withmooc <- emp
withmooc['str_comb_1'] <- paste(withmooc[['ename']],withmooc[['empno']],sep="")
withmooc['str_comb_2'] <- paste0(withmooc[['ename']],'', withmooc[['empno']])
head(withmooc)
# 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
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()
# 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
sqldf("select ename||empno from emp") %>% head()
ename||empno
1 SMITH7369.0
2 ALLEN7499.0
3 WARD7521.0
4 JONES7566.0
5 MARTIN7654.0
6 BLAKE7698.0
6. Python pandasql Package
파이프 연산자를 사용하여서 사원 이름과 사원번호를 결합한다.
ps.sqldf("select ename||empno concat from emp").head()
concat
0
SMITH7369
1
ALLEN7499
2
WARD7521
3
JONES7566
4
MARTIN7654
7. R data.table Package
base::paste 또는 stringr::str_c 함수를 사용하여서 문자열을 결합하여 출력한다.
%%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")]
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 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;
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 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;
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() 함수를 사용하여서 사원 이름과 사원번호를 결합한다.
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()
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
댓글