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

순동·2022년 2월 22일
0

📝 26번

데이터셋(basic1.csv)의 'f5' 컬럼을 기준으로 상위 10개의 데이터를 구하고, 'f5'컬럼 10개 중 최소값으로 데이터를 대체한 후, 'age'컬럼에서 80 이상인 데이터의'f5 컬럼 평균값 구하시오.

💻 풀이

> library(readr)
> library(dplyr)

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

> basic <- basic %>% arrange(desc(f5))
> f5_min <- min(basic$f5[1:10])
> basic$f5[1:10] <- f5_min

> result <- basic %>% filter(age >= 80) %>% summarise(mean=mean(f5))
> print(result)
# A tibble: 1 x 1
   mean
  <dbl>
1  62.5

📝 27번

데이터셋(basic1.csv)의 앞에서 순서대로 70% 데이터만 활용해서 'f1'컬럼 결측치를 중앙값으로 채우기 전후의 표준편차를 구하고 두 표준편차 차이 계산하시오.

💻 풀이

> library(readr)
> library(dplyr)

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

> basic <- basic %>% head(nrow(basic)*0.7)
> before_sd <- sd(basic$f1, na.rm=T)

> basic$f1 <- ifelse(is.na(basic$f1), median(basic$f1, na.rm=T), basic$f1)
> after_sd <- sd(basic$f1, na.rm=T)

> result <- abs(before_sd - after_sd)
> print(result)
[1] 3.296502

📝 28번

데이터셋(basic1.csv)의 'age'컬럼의 이상치를 더하시오. (단, 평균으로부터 '표준편차*1.5'를 벗어나는영역을 이상치라고 판단함)

💻 풀이

> library(readr)
> library(dplyr)

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

> colSums(is.na(basic))

> age_mean <- mean(basic$age)
> age_sd <- sd(basic$age)

> outlier <- basic %>% filter((age_mean - age_sd * 1.5 > basic$age)|(basic$age > age_mean + age_sd * 1.5))

> result <- sum(outlier$age)
> print(result)
[1] 473.5

📝 29번

첫번째 데이터 부터 순서대로 50:50으로 데이터를 나누고, 앞에서 부터 50%의 데이터(이하, A그룹)는'f1'컬럼을 A그룹의 중앙값으로 채우고, 뒤에서부터 50% 데이터(이하, B그룹)는 'f1'컬럼을 B그룹의 최대값으로 채운 후, A그룹과 B그룹의 표준편차 합을 구하시오. (단, 소수점 첫째자리까지 구하시오 (둘째자리에서 반올림))

💻 풀이

> library(readr)
> library(dplyr)

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

> A <- head(basic, nrow(basic) * 0.5)
> B <- tail(basic, nrow(basic) * 0.5)

> A$f1 <- ifelse(is.na(A$f1), median(A$f1, na.rm=T), A$f1)
> B$f1 <- ifelse(is.na(B$f1), max(B$f1, na.rm=T), B$f1)

> A_sd <- sd(A$f1)
> B_sd <- sd(B$f1)

> result <- round(A_sd + B_sd, 1) 
> print(result)
[1] 42

📝 30번

'f4'컬럼을 기준 내림차순 정렬과 'f5'컬럼기준 오름차순 정렬을 순서대로 다중 조건 정렬하고나서 앞에서부터 10개의 데이터 중 'f5'컬럼의 최소값 찾고, 이 최소값으로 앞에서 부터 10개의 'f5'컬럼 데이터를 변경함. 그리고 'f5'컬럼의 평균값을 계산함
단 소수점 둘째자리까지 출력(셋째자리에서 반올림)

💻 풀이

> library(readr)
> library(dplyr)

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

> basic <- basic %>% arrange(desc(f4), f5)
> basic$f5[1:10] <- min(basic$f5[1:10])

> result <- round(mean(basic$f5), 2)
> print(result)
[1] 53.63

📝 31번

'age' 컬럼의 IQR방식을 이용한 이상치 수와 표준편차x1.5 방식을 이용한 이상치 수 합을 구하시오.

  • IQR방식 : Q1 - 1.5 IQR, Q3 + 1.5 IQR에서 벗어나는 영역을 이상치라고 판단함 (Q1은 데이터의 25%, Q3는 데이터의 75% 지점임)
  • 표준편차1.5방식: 평균으로부터 '표준편차1.5'를 벗어나는 영역을 이상치라고 판단함

💻 풀이

> library(readr)
> library(dplyr)

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

> Q1 <- quantile(basic$age, 0.25)
> Q3 <- quantile(basic$age, 0.75)
> IQR <- Q3 - Q1

> outlier1 <- basic %>% filter((Q1-1.5*IQR > basic$age)|(basic$age > Q3+1.5*IQR))
> result1 <- nrow(outlier1)

> age_mean <- mean(basic$age)
> age_sd <- sd(basic$age)

> outlier2 <- basic %>% filter((age_mean-1.5*age_sd > basic$age)|(basic$age > age_mean+1.5*age_sd))
> result2 <- nrow(outlier2)

> result <- result1 + result2
> print(result)
[1] 14

0개의 댓글