[R] 빅데이터분석기사 - 유형1 ⑤

순동·2022년 2월 15일
0

📝 21번

주어진 데이터(basic2.csv)에서 주 단위 Sales의 합계를 구하고, 가장 큰 값을 가진 주와 작은 값을 가진 주의 차이를 구하시오(절대값)

💻 풀이

> library(readr)
> library(dplyr)
> library(lubridate)

> basic <- read_csv('basic2.csv')
> head(basic)
> str(basic)

> basic <- basic %>% group_by(week(Date)) %>% summarise(sum=sum(Sales))

> week_max <- max(basic$sum)
> week_min <- min(basic$sum)

> result <- abs(week_max - week_min)
> print(result)
[1] 146559579

📝 22번

f1의 결측치를 채운 후 age 컬럼의 중복 제거 전과 후의 중앙값을 구하시오.

  • 결측치는 f1의 데이터 중 10번째 큰 값으로 채움
  • 중복 데이터 발생시 뒤에 나오는 데이터를 삭제함
  • 최종 결과값은 절대값으로 출력

💻 풀이

> library(readr)
> library(dplyr)

> basic <- read_csv('basic1.csv')

> df <- basic %>% arrange(desc(f1))
> f1 <- df[10, ]$f1

> basic$f1 <- ifelse(is.na(basic$f1), f1, basic$f1)
> before_age <- median(basic$f1)
> before_age  # 77.5

> basic[duplicated(basic$age), ]['f1'] <- NA
> after_age <- median(basic$f1, na.rm=T)
> after_age  # 77

> result <- abs(before_age - after_age)
> print(result)
[1] 0.5

📝 23번

데이터에서 IQR을 활용해 'Fare'컬럼의 이상치를 찾고, 이상치 데이터의 여성 수를 구하시오.

💻 풀이

> library(readr)
> library(dplyr)

> titanic <- read_csv('train.csv')
> head(titanic)

> Q1 <- quantile(titanic$Fare, 0.25)
> Q3 <- quantile(titanic$Fare, 0.75)
> IQR <- Q3 - Q1

> outlier <- titanic %>% filter((titanic$Fare > Q1 - 1.5 * IQR) & (Q3 + 1.5 * IQR < titanic$Fare))

> result <- outlier %>% filter(outlier$Sex == "female") %>% summarise(n=n())
> print(result$n)
[1] 70

📝 24번

city와 f4를 기준으로 f5의 평균값을 구한 다음, f5를 기준으로 상위 7개 값을 모두 더해 출력하시오 (소수점 둘째자리까지 출력)

💻 풀이

> library(dplyr)
> library(readr)

> basic <- read_csv('basic1.csv')
> head(basic)

> colSums(is.na(basic))
> basic <- basic %>% group_by(city, f4) %>% summarise(f5_mean=mean(f5)) %>% arrange(desc(f5_mean)) %>% head(7)

> result <- round(sum(basic$f5_mean), 2)
> print(result)
[1] 643.68

📝 25번

주어진 데이터(basic2.csv)에서 새로운 컬럼(1일 이전 시차 컬럼)을 만들고, Events가 1이면서 Sales가 1000000이하인 조건에 맞는 새로운 컬럼 합을 구하시오.

💻 풀이

> library(readr)
> library(dplyr)
> library(data.table)

> basic <- read_csv('basic2.csv')
> head(basic)

> basic['lag'] <- shift(basic$PV, 1)
> result <- basic %>% filter(Events == 1 & Sales <= 1000000) %>% summarise(sum=sum(lag))
> print(result)
# A tibble: 1 x 1
    value
    <dbl>
1 1894876

0개의 댓글