본문 바로가기
통계프로그램 비교 시리즈/프로그래밍비교(Oracle,Python,R,SAS)

[데이터 전처리- 문자함수 예제] 문자열 절단 함수를 사용하여 문자열 자르기 - 69

by 기서무나구물 2021. 8. 27.

포스팅 목차

    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글자를 출력하라.


    • Oracle : substr() 함수
    • 파이썬 Pandas : .str.slice()
    • R 프로그래밍 : base::substr(), stringr::str_sub()
    • R Dplyr Package : stringr::str_sub()
    • R sqldf Package : substr() 함수
    • Python pandasql Package : substr() 함수
    • R data.table Package : stringr::str_sub()
    • SAS Proc SQL : substr() 함수
    • SAS Data Step : substr() 함수
    • Python Dfply Package : .str.slice()
    • 파이썬 Base 프로그래밍 :

     


    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

    반응형

    댓글