포스팅 목차
88. Display those departments whose name start with ‘S’ while location name end with ‘O’.
* 부서 이름이 ‘S’로 시작하고, 해당 부서가 위치하는 곳의 지명이 ‘O’로 끝나는 부서 정보를 출력하시오.
- 좀 더 다양한 풀이 방법은 87번 참조
- 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크
- 문자 검색 함수
|
1. Oracle(오라클)
like 함수를 사용하여서 부서 이름이 ‘S’로 시작하고, 해당 부서가 위치하는 곳의 지명이 ‘O’로 끝나는 부서 정보를 출력하시오
Oracle Programming |
select *
from dept
where dname like 'S%'
and loc like '%O'
2. Python Pandas(파이썬)
pandas.Series.str.startswith 와 pandas.Series.str.endswith 함수를 사용하여서 문자열이 특정 글자로 시작하거나 특정 문자로 끝나는지를 확인하여 선택한다.
Python Programming |
dept[dept['dname'].str.startswith("S") & dept['loc'].str.endswith("O")]
Results |
deptno | dname | loc |
30 | SALES | CHICAGO |
Python Programming |
dept[ dept['dname'].str.match("^S") & dept['loc'].str.match(".*O$") ]
Results |
deptno | dname | loc |
30 | SALES | CHICAGO |
3. R Programming (R Package)
- string Vs Base 함수 : https://stringr.tidyverse.org/articles/from-base.html
startsWith 와 endsWith 함수를 사용하여서 문자열이 특정 글자로 시작하거나 특정 문자로 끝나는지를 확인하여 선택한다. 부서명이 “S”로 시작하고, 부서가 위치한 지명이 “O”로 끝나는 곳에 해당하는 부서 정보를 선택한다.
Oracle Programming |
%%R
dept[ base::startsWith(dept$dname,"S") & base::endsWith(dept$loc,"O") , ]
Results |
# A tibble: 1 x 3
deptno dname loc
<dbl> <chr> <chr>
1 30 SALES CHICAGO
stringr::str_detect 함수를 사용하여서 문자열에서 사용자가 지정한 특정 패턴과 일치 여부를 확인하여 선택한다. “^S” 는 문자열이 “S”로 시작되는지 여부를 판단하고, “O$”는 문자열이 “O”로 끝나는지 여부를 판단한다.
Oracle Programming |
%%R
dept[stringr::str_detect(dept$dname, "^S") & stringr::str_detect(dept$loc, "O$") ,]
Results |
# A tibble: 1 x 3
deptno dname loc
<dbl> <chr> <chr>
1 30 SALES CHICAGO
4. R Dplyr Package
stringr::str_detect 함수를 사용하여서 문자열에서 사용자가 지정한 특정 패턴과 일치 여부를 확인하여 선택한다. “^S” 는 문자열이 “S”로 시작되는지 여부를 판단하고, “O$”는 문자열이 “O”로 끝나는지 여부를 판단한다.
부서명이 “S”로 시작하고, 부서가 위치한 지명이 “O”로 끝나는 곳에 해당하는 부서 정보를 선택한다.
Oracle Programming |
%%R
dept %>%
dplyr::filter( stringr::str_detect(dname, "^S") & stringr::str_detect(loc, "O$") )
Results |
# A tibble: 1 x 3
deptno dname loc
<dbl> <chr> <chr>
1 30 SALES CHICAGO
5. R sqldf Package
like 함수를 사용하여서 부서 이름이 ‘S’로 시작하고, 해당 부서가 위치하는 곳의 지명이 ‘O’로 끝나는 부서 정보를 출력하시오
R Programming |
%%R
sqldf("select * from dept where dname like 'S%' and loc like '%O'")
Results |
deptno dname loc
1 30 SALES CHICAGO
6. Python pandasql Package
like 함수를 사용하여서 부서 이름이 ‘S’로 시작하고, 해당 부서가 위치하는 곳의 지명이 ‘O’로 끝나는 부서 정보를 출력하시오
Python Programming |
ps.sqldf("select * from dept where dname like 'S%' and loc like '%O'")
Results |
deptno | dname | loc |
30 | SALES | CHICAGO |
7. R data.table Package
%like% 함수를 사용하여서 부서 이름이 ‘S’로 시작하고, 해당 부서가 위치하는 곳의 지명이 ‘O’로 끝나는 부서 정보를 출력하시오
R Programming |
%%R
DT <- data.table(emp)
dept_DT <- data.table(dept)
dept_DT[dname %like% '^S' & loc %like% 'O$', ]
Results |
deptno dname loc
1: 30 SALES CHICAGO
grepl 함수를 사용하여서 문자열에서 사용자가 지정한 특정 패턴과 일치 여부를 확인하여 선택한다. “^S” 는 문자열이 “S”로 시작되는지 여부를 판단하고, “^.*O$”는 문자열이 “O”로 끝나는지 여부를 판단한다. 결과적으로 부서명이 “S”로 시작하고, 부서가 위치한 지명이 “O”로 끝나는 곳에 해당하는 부서 정보를 선택한다.
R Programming |
%%R
DT <- data.table(emp)
dept_DT <- data.table(dept)
dept_DT[grepl("^S", dname) & grepl("^.*O$", loc), ]
Results |
deptno dname loc
1: 30 SALES CHICAGO
8. SAS Proc SQL
like 함수를 사용하여서 부서 이름이 ‘S’로 시작하고, 해당 부서가 위치하는 곳의 지명이 ‘O’로 끝나는 부서 정보를 출력하시오
SAS Programming |
%%SAS sas
PROC SQL;
CREATE TABLE STATSAS_1 AS
select *
from dept
where dname like 'S%'
and loc like '%O';
QUIT;
PROC PRINT;RUN;
Results |
deptno | dname | loc |
30 | SALES | CHICAGO |
9. SAS Data Step
like 함수를 사용하여서 부서 이름이 ‘S’로 시작하고, 해당 부서가 위치하는 곳의 지명이 ‘O’로 끝나는 부서 정보를 출력하시오
SAS Programming |
%%SAS sas
DATA STATSAS_2;
Set dept;
where dname like 'S%'
and loc like '%O';
RUN;
PROC PRINT;RUN;
Results |
deptno | dname | loc |
30 | SALES | CHICAGO |
SAS Programming |
%%SAS sas
DATA STATSAS_2;
Set dept;
pos1 = prxmatch('/^S/', dname);
pos2 = prxmatch('/O(\s)+$/', loc);
pos3 = prxmatch('/O$/', trim(loc));
where prxmatch('/^S/', dname) > 0
and prxmatch('/O(\s)+$/', loc) > 0;
RUN;
PROC PRINT;RUN;
Results |
deptno | dname | loc | pos1 | pos2 | pos3 |
30 | SALES | CHICAGO | 1 | 7 | 7 |
10. Python Dfply Package
- X.loc 로 변수명 지정하는 경우 에러 발생 (59번 참고)
- 에러문 : AttributeError: ‘NotImplementedType’ object has no attribute ‘dtype’
- 관련이슈 : https://github.com/kieferk/dfply/issues/65
- 조치사항 : 1) 변수명 사전 변경하여 처리 2) X[‘loc’] 로 변수 지정하는 방법
Python Programming |
dept >> filter_by( X.dname.str.startswith("S"),
X['loc'].str.endswith("O"))
Results |
deptno | dname | loc |
30 | SALES | CHICAGO |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 전처리 방법 리스트
'통계프로그램 비교 시리즈 > 프로그래밍비교(Oracle,Python,R,SAS)' 카테고리의 다른 글
[데이터 추출] Where 조건절을 만족하는 데이터 추출 - 90 (1) | 2022.09.26 |
---|---|
[데이터 추출] 비상관 서브쿼리(Uncorrelated Subqueyr) 를 만족하는 데이터 추출 - 비교 연산자(=) - 89 (1) | 2022.09.26 |
[문자 함수] 문자 길이 측정 - 87 (1) | 2022.09.26 |
[데이터 전처리] 비상관 서브쿼리(Uncorrelated Subqueyr) 를 만족하는 데이터 추출 - 상하 결합 UNION 연산자 - 86 (0) | 2022.09.23 |
[데이터 전처리 비교- 데이터 추출] 비상관 서브쿼리를 만족하는 데이터 추출 & 부등호 연산 - 85 (0) | 2022.06.13 |
댓글