[R] 중복제거, 정렬
중복제거
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)