[R] 그룹함수
그룹함수
NA값 포함
x <- c(70,80,90,100)
sum(x) : 합
mean(x) : 평균
var(x) : 분산
sd(x) : 표준편차
max(x) : 최댓값
min(x) : 최솟값
length(x) : 개수
NROW(x) : 개수
NA값 제외
x <- c(70,80,90,100,NA)
sum(x,na.rm=T) : na.rm=T : NA제외, na.rm=F 기본값
sum(na.omit(x)) : NA제외
#SQL ) select count(*) from employees; : null 포함한 행의 수
select count(commission_pct) from employees; : null 제외한 행의 수
aggregate
: 데이터를 분할하고 각 그룹을 묶은 후 그룹함수를 적용하는 함수
aggregate(그룹함수를 적용할 컬럼~분할 기준 컬럼,데이터프레임,그룹함수)
aggregate(SALARY~DEPARTMENT_ID,employees,sum)
#SQL ) select department_id, sum(Salary) from employees group by department_id;
label 라벨링
df <- data.frame(id=100:104, weight=c(60,90,75,95,65),
size=c('small','large','medium','large','small'))
① df$size <- factor(df$size,levels = c('small','medium','large'))
⇒ level을 지정함.
② df$size <- factor(df$size,levels = c('small','medium','large'),
labels = c('작다','중간','크다'))
⇒ level값(1,2,3)에 따라 라벨링
[문제66] 직업이 ST_CLERK 인 사원들중에 최대월급을 출력하세요.
max(employees[employees$JOB_ID %in% 'ST_CLERK','SALARY'])
[문제67] 최소 급여를 받는 사원들의 정보를 출력해주세요.
employees[employees$SALARY == min(employees$SALARY),]
[문제68] JOB_ID별 인원수를 출력해주세요.
aggregate(EMPLOYEE_ID~JOB_ID,employees,length)
aggregate(EMPLOYEE_ID~JOB_ID,employees,NROW)
[문제69] DEPARTMENT_ID별 평균급여를 구한후 평균급여가 8000이상인 정보만 출력해주세요.
x <- aggregate(SALARY~DEPARTMENT_ID,employees,mean)
x[x$SALARY >= 8000,]
orderBy(~DEPARTMENT_ID,x[x$SALARY>=8000,])
[문제70] 년도별 총액급여를 구하세요.
aggregate(SALARY~lubridate::year(HIRE_DATE),employees,sum)
names(x)<- c('년도','총액')
[문제71] 요일별 총액급여를 구하세요.
aggregate(SALARY~lubridate::wday(HIRE_DATE,week_start = 1,label = T),employees,sum)
names(x)<- c('요일','총액')