R

[R] 중복제거, 정렬

ㄷㅐ장님 2022. 1. 13. 00:51

중복제거

unique(employees$JOB_ID)

as.integer(na.omit(unique(employees$DEPARTMENT_ID)))

sort() 정렬

x <- c(6,9,2,3,5,4,7,1,8)

sort(x,decreasing = F) : 오름차순(기본값)

sort(x,decreasing = T) : 내림차순

 

x <- c(6,9,2,NA,3,5,NA,4,7,1,NA,8)

sort(x,decreasing = F,na.last = NA) : 오름차순, NA출력 안함. 기본값

sort(x,decreasing = F,na.last = T) : 숫자 뒤에 NA 출력

sort(x,decreasing = F,na.last = F) : 숫자 앞에 NA 출력

rev() 역순

rev(x)

x <- c(6,9,2,NA,3,5,NA,4,7,1,NA,8)

rev(na.omit(x)) : NA 제외

order()

: 정렬의 인덱스번호를 반환하는 함수

-NA값 포함

order(x,decreasing=T,na.last = T) : 뒤에 NA 출력(기본값)

order(x,decreasing=T,na.last = F) : 앞에 NA 출력

 

doBy

: 데이터프레임에서 정렬.

install.packages("doBy")

library(doBy)

 

orderBy(~기준,데이터)

orderBy(~DEPARTMENT_ID,employees[,c('LAST_NAME','SALARY','DEPARTMENT_ID')]) : 오름차순

orderBy(~-DEPARTMENT_ID,employees[,c('LAST_NAME','SALARY','DEPARTMENT_ID')]) : 내림차순

orderBy(~DEPARTMENT_ID +SALARY,employees[,c('LAST_NAME','SALARY','DEPARTMENT_ID')]) : 오름차순 orderBy(~DEPARTMENT_ID -SALARY,employees[,c('LAST_NAME','SALARY','DEPARTMENT_ID')]) : sal 내림차순

orderBy(~-DEPARTMENT_ID -SALARY,employees[,c('LAST_NAME','SALARY','DEPARTMENT_ID')]) : 내림차순


[문제59] 사원들의 LAST_NAME,SALARY를 출력해주세요. 단 SALARY를 기준으로 내림차순으로 정렬하세요.

더보기
①
orderBy(~-SALARY,employees[,c('LAST_NAME','SALARY')])
②
employees[order(employees$SALARY,decreasing = T),c('LAST_NAME','SALARY')]

[문제60] last_name, hire_date를 출력하는데 먼저 입사한 사원부터 출력하세요.

더보기
orderBy(~-HIRE_DATE,employees[,c('LAST_NAME','HIRE_DATE')])

[문제61] 아래화면과 같이 사원들의 정보를 출력해주세요.

사번 이름 입사일 입사요일

104 Ernst Bruce 2007-05-21 월

123 Vollman Shanta 2005-10-10 월

133 Mallin Jason 2004-06-14 월

137 Ladwig Renske 2003-07-14 월

...

더보기
orderBy(~입사요일,data.frame(사번 =employees$EMPLOYEE_ID,
                            이름 =paste(employees$LAST_NAME,employees$FIRST_NAME),
                            입사일 =employees$HIRE_DATE,
                            입사요일 =lubridate::wday(employees$HIRE_DATE,week_start = 1,label = T)))

[문제62] 30번 부서 사원들의 last_name, salary를 출력하세요. 단 salary를 기준으로 내림차순정렬하세요.

더보기
x <- employees[employees$DEPARTMENT_ID %in% 30,c('LAST_NAME','SALARY')]

orderBy(~-SALARY,x)

[문제63] job_id가 ST_CLERK 가 아닌 사원들의 last_name, salary, job_id를 출력하는데 급여가 높은 사원부터 출력되게하세요.

더보기
x <- employees[employees$JOB_ID != 'ST_CLERK' ,c('LAST_NAME','SALARY','JOB_ID')]

orderBy(~-SALARY,x)

[문제64] 사원 last_name, salary, commission_pct를 출력하는데 commission_pct를 기준으로 오름차순정렬하세요.

더보기
orderBy(~COMMISSION_PCT,employees[,c('LAST_NAME','SALARY','COMMISSION_PCT')])

[문제65] commission_pct를 받고 있는 사원들의 last_name, salary, commission_pct를 출력하는데 commission_pct를 기준으로 오름차순정렬하세요.

더보기
x <- employees[!is.na(employees$COMMISSION_PCT),c('LAST_NAME','SALARY','COMMISSION_PCT')]

orderBy(~~COMMISSION_PCT,x)