아이티윌_데이터 분석 55기/문제풀이_통계 및 분석

#1-2. 1일차 퀴즈에 대한 문제풀이

ecosso 2026. 3. 30. 17:15

# 1. emp.csv 파일을 읽고
emp <- read.csv('emp.csv')

# 1) COMM의 값이 NA인 행을 제외한 결과를 emp_new에 저장

 

더보기

[내 답안]

 

head(emp)
!is.na(emp$COMM)
emp_new <- emp[!is.na(emp$COMM),]

head(emp_new)
emp_new

 

 

[문제풀이]

 

emp_new <- emp[!is.na(emp$COMM),]

 

# 2) emp에서 COMM값이 NA인경우 100으로 수정

더보기

[내 답안]

 

head(emp)
emp[is.na(emp$COMM),]
emp$COMM[is.na(emp$COMM)] <- '100'
emp

 

 

[문제풀이]

 

emp[is.na(emp$COMM), 'COMM'] <- 100

 

# 3) 모든 직원의 사번, 이름, 입사일과 오늘날짜기준 근무일수 출력

더보기

[내 답안]

 

head(emp)
str(emp$HIREDATE)
as.Date(emp$HIREDATE, '%Y-%m-%d')

emp$HIRE_DAYS <- Sys.Date() - as.Date(emp$HIREDATE, '%Y-%m-%d')
emp[c('EMPNO','ENAME','HIREDATE','HIRE_DAYS')]

 

 

[문제풀이]

 

emp$HIREDATE <- as.Date(emp$HIREDATE)
emp$DAYS <- as.numeric(Sys.Date() - emp$HIREDATE)

emp[,c('EMPNO','ENAME','HIREDATE','DAYS')]

 

# 4) 30번 직원들의 급여를 10% 인상된 값으로 수정

더보기

[내 답안]

 

head(emp)
emp$SAL[emp$DEPTNO == 30] <- emp$SAL[emp$DEPTNO == 30] * 1.1

emp

 

 

[문제풀이]

 

emp[emp$DEPTNO == 30, 'SAL'] <- emp[emp$DEPTNO == 30, 'SAL'] * 1.1

 

# 2. student.csv 파일을 읽고
std <- read.csv('student.csv', fileEncoding = 'cp949')

# 1) 4학년이면서 키가 175 이상인 학생의 학번, 학년, 키 출력

더보기

[내 답안]

 

head(std)
std[(std$GRADE == 4) & (std$HEIGHT >= 175), c("STUDNO", 'GRADE', 'HEIGHT')]

 

 

[문제풀이]

 

std[(std$GRADE ==4) & (std$HEIGHT >=175), c("STUDNO", 'GRADE', 'HEIGHT')]

 

# 2) 생일이 월요일인 학생 수 출력

더보기

[내 답안]

 

head(std)
str(std$BIRTHDAY)
as.Date(std$BIRTHDAY, '%Y/%m/%d')
std$DAY <- strftime(std$BIRTHDAY, '%A')
std

nrow(std(std$DAY == '월요일'))
std

nrow(std[std$DAY == '월요일', ])

 

 

[문제풀이]

 

str(std)
std$BIRTHDAY <- as.Date(std$BIRTHDAY)
std$DAY <- strftime(std$BIRTHDAY, '%A')

sum(std$DAY == '월요일')

 

# 3) DEPTNO2가 NA인 대상들을 "제2전공없음" 으로 수정

더보기

[내 답안]

 

head(std)

std$DEPTNO2 <- as.character(std$DEPTNO2)
std$DEPTNO2[is.na(std$DEPTNO2)] <- '제2전공없음'

std

 

 

[문제풀이]

 

std[is.na(std$DEPTNO2), 'DEPTNO2'] <- "제2전공없음"

# 4) 1,4학년 학생들의 이름, 학년, 나이를 출력
# 단, 나이는 만나이로 계산(2000년생 -> 2026-2000+1)

더보기

[내 답안]

 

str(std$BIRTHDAY)
bir <- as.Date(std$BIRTHDAY, '%Y/%m/%d')
std$YEAR <- as.numeric(trunc((Sys.Date() - bir +365)/365))
std$YEAR


std[(std$GRADE == 1) | (std$GRADE == 4), c('NAME', 'GRADE', 'YEAR')]

 

 

[문제풀이]

 


toyear <- as.numeric(strftime(Sys.Date(), '%Y'))
byear <- as.numeric(strftime(std$BIRTHDAY, '%Y'))

std$AGE <- toyear - byear + 1

std[std$GRADE %in% c(1,4), c('NAME', 'GRADE', 'AGE')]