R

[R] 그룹함수

ㄷㅐ장님 2022. 1. 13. 01:19

그룹함수

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('요일','총액')