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

[데이터 조건 선택 - NOT NULL] 조건문을 만족하는 관측치 선택 후 특정 변수 출력 - 9

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

포스팅 목차

     

    9. Display employee number and names for employees who earn commission.

     

    * 커미션을 받는 직원의 사원번호와 이름을 출력하시오.


    • Oracle : where 구문, is not null 연산자
    • 파이썬 Pandas : 행 인덱싱, query 구문, notnull() 함수
    • R 프로그래밍 : 행 인덱싱, which 구문, subset 구문, is.na() 함수, which() 함수
    • R Dplyr Package : filter 구문
    • R sqldf Package : where 구문
    • Python pandasql Package : where 구문
    • R data.table Package : 행 인덱싱, is.na() 함수
    • SAS Proc SQL : where 구문
    • SAS Data Step : where 구문, IF 구문
    • Python Dfply Package : filter_by 구문, mask 구문, notnull() 함수
    • 파이썬 Base 프로그래밍 :

     


    1. 오라클(Oracle)

    Oracle Programming
    select empno, ename 
    from   emp 
    where  comm is not null 
      and  comm>0;

     


    2. 파이썬(Pandas)

    Emp테이블에서 comm 변수에 값이 존재하는 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.

    Python Programming
    emp[ (emp['comm'].notnull()) & (emp['comm'] > 0 )][["empno","ename"]]

     

    Results
      empno ename
    1 7499 ALLEN
    2 7521 WARD
    4 7654 MARTIN

     


     

    Python Programming
    emp.loc[(emp.comm.notnull()) & (emp.comm > 0) , ["empno","ename"]]

     

    Results
      empno ename
    1 7499 ALLEN
    2 7521 WARD
    4 7654 MARTIN

     


    Emp테이블에서 query 구문을 사용하여서 comm 변수에 값이 존재하는 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.

    Python Programming
    # query 구문에서 isnull() / notnull() 구문 사용 : python engine instead of numexpr engin
    
    emp.query('comm.notnull() & comm > 0', engine='python')[["empno","ename"]]

     

    Results
      empno ename
    1 7499 ALLEN
    2 7521 WARD
    4 7654 MARTIN

     


    3. R Programming (R Package)

    Emp테이블에서 comm 변수에 값이 존재하는 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.

    R Programming
    %%R
    emp[!is.na(emp$comm) & emp$comm > 0 , c("empno","ename") ]

     

    Results
    # A tibble: 3 x 2
      empno ename 
      <dbl> <chr> 
    1  7499 ALLEN 
    2  7521 WARD  
    3  7654 MARTIN

     


    which 함수를 사용하여서 comm 변수에 값이 존재(NA가 아니고 0보다 큰)하는 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력한다.

     

    R Programming
    %%R
    emp[which(!is.na(emp$comm) & emp$comm > 0), c("empno","ename") ]

     

    Results
    # A tibble: 3 x 2
      empno ename 
      <dbl> <chr> 
    1  7499 ALLEN 
    2  7521 WARD  
    3  7654 MARTIN

     


    Emp테이블에서 Subset 구문을 사용하여서 comm 변수에 값이 존재하는 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.

    R Programming
    %%R
    subset(emp,subset= (!is.na(comm) & comm >0) , select=c(empno,ename) )

     

    Results
    # A tibble: 3 x 2
      empno ename 
      <dbl> <chr> 
    1  7499 ALLEN 
    2  7521 WARD  
    3  7654 MARTIN

     


    4. R Dplyr Package

    Emp테이블에서 filter구문을 사용하여서 comm 변수에 값이 존재하는 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.

    R Programming
    %%R
    emp %>% filter(!is.na(comm) & comm >0 ) %>% dplyr::select(empno,ename)

     

    Results
    # A tibble: 3 x 2
      empno ename 
      <dbl> <chr> 
    1  7499 ALLEN 
    2  7521 WARD  
    3  7654 MARTIN

     


    5. R sqldf Package

    Emp테이블에서 comm 변수에 값이 존재하는 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.

    R Programming
    %%R
    
    require(sqldf)
    sqldf("select empno, ename from emp where comm is not null and comm>0")

     

    Results
      empno  ename
    1  7499  ALLEN
    2  7521   WARD
    3  7654 MARTIN

     


    6. Python pandasql Package

    Emp테이블에서 comm 변수에 값이 존재하는 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.

    Python Programming
    ps.sqldf("select empno, ename from emp where comm is not null and comm>0")

     

    Results
      empno ename
    0 7499 ALLEN
    1 7521 WARD
    2 7654 MARTIN

     


    7. R data.table Package

    Emp테이블(DT)에서 comm 변수에 값이 존재하는 직원을 선택하고, 해당 사원의 사원번호와 사원명을 출력.

    R Programming
    %%R
    
    DT          <- data.table(emp)
    dept_DT     <- data.table(dept)
    
    DT[ !is.na(comm) & comm >0 , .( empno, ename )]

     

    Results
       empno  ename
    1:  7499  ALLEN
    2:  7521   WARD
    3:  7654 MARTIN

     


    8. SAS Proc SQL

     

    SAS Programming
    %%SAS sas
    
    PROC SQL;
      CREATE TABLE STATSAS_1 AS
        SELECT EMPNO,ENAME
        FROM   EMP
        WHERE COMM NE .
          AND COMM > 0;
    QUIT;
    PROC PRINT;RUN;

     

    Results
    OBS empno ename
    1 7499 ALLEN
    2 7521 WARD
    3 7654 MARTIN

     

     


    9. SAS Data Step

     EMP 데이터 세트에서 커미션(comm)이 0보다 큰 값을 가지는 사원들의 사원 번호와 이름을 선택하여 신규 데이터 세트를 생성한다.

    SAS Programming
    %%SAS sas
    
    DATA STATSAS_2;
     SET EMP;
         KEEP EMPNO ENAME;
         WHERE COMM NE .
          AND COMM > 0;
    RUN;
    PROC PRINT;RUN;

     

    Results
    OBS empno ename
    1 7499 ALLEN
    2 7521 WARD
    3 7654 MARTIN

     


    10. Python Dfply Package

    filter_by 함수를 사용하여서 comm 변수에 값이 존재하고 해당 값이 0보다 큰 직원들의 정보를 선택 후에 select 함수를 사용하여서 empno와 ename 변수를 출력한다.

    Python Programming
    emp >> filter_by(X.comm.notnull() , X.comm > 0) >> select(X.empno, X.ename)

     

    Results
      empno ename
    1 7499 ALLEN
    2 7521 WARD
    4 7654 MARTIN

     


    mask 함수를 사용하여서 comm 변수에 값이 존재하고 해당 값이 0보다 큰 직원들의 정보를 선택 후에 select 함수를 사용하여서 empno와 ename 변수를 출력한다.

    Python Programming
    emp >> mask(X.comm.notnull() , X.comm > 0) >> select(X.empno, X.ename)
    Results
      empno ename
    1 7499 ALLEN
    2 7521 WARD
    4 7654 MARTIN

     


    [SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE]   SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트

     

    반응형

    댓글