포스팅 목차
69. Use appropriate function and extract 3 characters starting from 2 characters from the following string 'Oracle' i.e. the output should be 'rac'
* 문자열 사원 이름의 2번째 위치를 시작해서 3글자를 출력하라.
- 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크
- [문자 함수] 문자열 절단 함수를 사용하여 문자열 자르기
|
1. Oracle(오라클)
- Substr() 문자열 절단 함수
Oracle Programming |
select substr('oracle',2,3) str_substr
from dual
- emp 테이블에서 사원 이름을 선택하여서 문자열의 2번째 위치를 시작해서 3글자를 출력하라.
Oracle Programming |
select substr(ename,2,3) from emp
2. Python Pandas(파이썬)
- 사원 이름의 2번째 위치를 시작으로 3 글자를 선택하여서 새로운 변수로 생성한다.
Python Programming |
import copy
withmooc = copy.copy(emp)
withmooc
withmooc['ename_string'] = withmooc['ename'].str.slice(1,4)
display(withmooc.head())
Results |
empno | ename | job | mgr | hiredate | sal | comm | deptno | ename_string | |
0 | 7369 | SMITH | CLERK | 7902.0 | 1980/12/17 | 800 | NaN | 20 | MIT |
1 | 7499 | ALLEN | SALESMAN | 7698.0 | 1981/02/20 | 1600 | 300.0 | 30 | LLE |
2 | 7521 | WARD | SALESMAN | 7698.0 | 1981/02/22 | 1250 | 500.0 | 30 | ARD |
3 | 7566 | JONES | MANAGER | 7839.0 | 1981/04/02 | 2975 | NaN | 20 | ONE |
4 | 7654 | MARTIN | SALESMAN | 7698.0 | 1981/09/28 | 1250 | 1400.0 | 30 | ART |
3. R Programming (R Package)
- base::substr 함수를 사용하여서 사원 이름의 2번째 위치를 시작으로 3 글자를 추출한다.
R Programming |
%%R
withmooc <- emp
withmooc['ename_str'] = base::substr(withmooc$ename,2,4)
head(withmooc)
Results |
# A tibble: 6 x 9
empno ename job mgr hiredate sal comm deptno ename_str
<dbl> <chr> <chr> <dbl> <date> <dbl> <dbl> <dbl> <chr>
1 7369 SMITH CLERK 7902 1980-12-17 800 NA 20 MIT
2 7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30 LLE
3 7521 WARD SALESMAN 7698 1981-02-22 1250 500 30 ARD
4 7566 JONES MANAGER 7839 1981-04-02 2975 NA 20 ONE
5 7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30 ART
6 7698 BLAKE MANAGER 7839 1981-03-01 2850 NA 30 LAK
stringr::str_sub 함수를 사용하여서 사원 이름의 2번째 위치를 시작으로 4번째 위치의 문자(3 글자)를 추출한다. stringi 과 stringr 패키지는 다양한 문자열 처리 함수를 제공한다.
R Programming |
%%R
# install.packages("stringr")
library(stringr)
withmooc <- emp
withmooc['ename_str'] = stringr::str_sub(withmooc$ename,2,4)
head(withmooc)
Results |
# A tibble: 6 x 9
empno ename job mgr hiredate sal comm deptno ename_str
<dbl> <chr> <chr> <dbl> <date> <dbl> <dbl> <dbl> <chr>
1 7369 SMITH CLERK 7902 1980-12-17 800 NA 20 MIT
2 7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30 LLE
3 7521 WARD SALESMAN 7698 1981-02-22 1250 500 30 ARD
4 7566 JONES MANAGER 7839 1981-04-02 2975 NA 20 ONE
5 7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30 ART
6 7698 BLAKE MANAGER 7839 1981-03-01 2850 NA 30 LAK
4. R Dplyr Package
stringr::str_sub 함수를 사용하여서 사원 이름의 2번째 위치를 시작으로 4번째 위치의 문자(3 글자)를 추출한다. stringi 과 stringr 패키지는 다양한 문자열 처리 함수를 제공한다.
R Programming |
%%R
emp %>%
dplyr::mutate(ename_str = stringr::str_sub (ename,2,4)) %>%
head()
Results |
# A tibble: 6 x 9
empno ename job mgr hiredate sal comm deptno ename_str
<dbl> <chr> <chr> <dbl> <date> <dbl> <dbl> <dbl> <chr>
1 7369 SMITH CLERK 7902 1980-12-17 800 NA 20 MIT
2 7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30 LLE
3 7521 WARD SALESMAN 7698 1981-02-22 1250 500 30 ARD
4 7566 JONES MANAGER 7839 1981-04-02 2975 NA 20 ONE
5 7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30 ART
6 7698 BLAKE MANAGER 7839 1981-03-01 2850 NA 30 LAK
5. R sqldf Package
- substr 함수를 사용하여서 사원 이름의 2번째 위치를 시작해서 3글자를 출력하라.
R Programming |
%%R
sqldf("select substr(ename,2,3) ename_str from emp;") %>% head()
Results |
ename_str
1 MIT
2 LLE
3 ARD
4 ONE
5 ART
6 LAK
6. Python pandasql Package
- Substr() 문자열 절단 함수
Python Programming |
ps.sqldf("select substr(ename,2,3) ename_str from emp").head()
Results |
ename_str | |
0 | MIT |
1 | LLE |
2 | ARD |
3 | ONE |
4 | ART |
7. R data.table Package
stringr::str_sub 함수를 사용하여서 사원 이름의 2번째 위치를 시작으로 4번째 위치의 문자(3 글자)를 추출한다. stringi 과 stringr 패키지는 다양한 문자열 처리 함수를 제공한다.
R Programming |
%%R
DT <- data.table(emp)
DT[,ename_str := stringr::str_sub (ename,2,4)][1:5,]
Results |
empno ename job mgr hiredate sal comm deptno ename_str
1: 7369 SMITH CLERK 7902 1980-12-17 800 NA 20 MIT
2: 7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30 LLE
3: 7521 WARD SALESMAN 7698 1981-02-22 1250 500 30 ARD
4: 7566 JONES MANAGER 7839 1981-04-02 2975 NA 20 ONE
5: 7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30 ART
8. SAS Proc SQL
- Substr() 문자열 절단 함수
SAS Programming |
%%SAS sas
PROC SQL;
CREATE TABLE STATSAS_1 AS
select ename,
substr(ename,2,3) as ename_substr
from emp;
QUIT;
PROC PRINT data=STATSAS_1(obs=3);RUN;
Results |
OBS | ename | ename_substr |
1 | SMITH | MIT |
2 | ALLEN | LLE |
3 | WARD | ARD |
9. SAS Data Step
- Substr() 문자열 절단 함수
SAS Programming |
%%SAS sas
DATA STATSAS_2;
SET emp;
ename_substr = substr(ename,2,3);
keep ename empno ename_substr;
RUN;
PROC PRINT data=STATSAS_2(obs=3);RUN;
Results |
OBS | empno | ename | ename_substr |
1 | 7369 | SMITH | MIT |
2 | 7499 | ALLEN | LLE |
3 | 7521 | WARD | ARD |
10. Python Dfply Package
- Slice() 문자열 절단 함수
Python Programming |
emp >> \
mutate( ename_str = X.ename.str.slice(1,4) ) >> head()
Results |
empno | ename | job | mgr | hiredate | sal | comm | deptno | ename_str | |
0 | 7369 | SMITH | CLERK | 7902.0 | 1980/12/17 | 800 | NaN | 20 | MIT |
1 | 7499 | ALLEN | SALESMAN | 7698.0 | 1981/02/20 | 1600 | 300.0 | 30 | LLE |
2 | 7521 | WARD | SALESMAN | 7698.0 | 1981/02/22 | 1250 | 500.0 | 30 | ARD |
3 | 7566 | JONES | MANAGER | 7839.0 | 1981/04/02 | 2975 | NaN | 20 | ONE |
4 | 7654 | MARTIN | SALESMAN | 7698.0 | 1981/09/28 | 1250 | 1400.0 | 30 | ART |
[다양한 데이터 전처리 방법 목록 링크] SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE
반응형
'통계프로그램 비교 시리즈 > 프로그래밍비교(Oracle,Python,R,SAS)' 카테고리의 다른 글
[데이터 전처리- 문자함수 예제] 문자열에서 특정 문자 변경 - 71 (0) | 2021.08.30 |
---|---|
[데이터 전처리- 문자함수 예제] 기준 문자열에서 특정 문자 검색 - 70 (0) | 2021.08.30 |
[데이터 전처리- 문자함수 예제] 문자열 결합(||) & 문자열 연결 - 68 (0) | 2021.08.27 |
[데이터 전처리- 문자함수 예제] 문자 길이 합계 계산 - 67 (0) | 2021.08.27 |
[데이터 전처리- 문자함수 예제] 문자 길이 측정 방식 비교 - 66 (0) | 2021.08.24 |
댓글