📝 11번
주어진 데이터에서 상위 10개 국가의 접종률 평균과 하위 10개 국가의 접종률 평균을 구하고, 그 차이를 구해보세요 (이상치 - 100%가 넘는 접종률 제거, 소수 첫째 자리까지 출력)
💻 풀이
> covid <- read.csv('covid-vaccination-vs-death_ratio.csv', header=TRUE)
> covid <- covid[covid$ratio < 100, ]
> high <- covid %>% group_by(country) %>% summarise(max = max(ratio))
> high
# A tibble: 200 x 2
country max
<chr> <dbl>
1 Afghanistan 8.78
2 Albania 36.8
3 Algeria 14.4
4 Andorra 71.1
5 Angola 17.3
6 Anguilla 65.5
7 Antigua and Barbuda 61.4
8 Argentina 78.9
9 Armenia 21.7
10 Aruba 77.8
# ... with 190 more rows
> high_sort <- high %>% arrange(desc(max))
> high <- head(high_sort, 10)
> low <- tail(high_sort, 10)
> high_mean <- mean(high$max)
> low_mean <- mean(low$max)
> result <- round(high_mean - low_mean, 1)
> print(result)
[1] 89.4
📝 12번
주어진 데이터에서 상관관계를 구하고, quality와의 상관관계가 가장 큰 값과, 가장 작은 값을 구한 다음 더하시오. (단, quality와 quality 상관관계 제외, 소수점 둘째 자리까지 출력)
💻 풀이
> wine <- read.csv('winequality-red.csv')
> corr <- as.data.frame(cor(wine)['quality', ])
> corr <- corr[-12, ]
> corr
[1] 0.12405165 -0.39055778 0.22637251 0.01373164 -0.12890656 -0.05065606 -0.18510029 -0.17491923 -0.05773139 0.25139708 0.47616632
> cor_max <- max(abs(corr))
> cor_max
[1] 0.4761663
> cor_min <- min(abs(corr))
> cor_min
[1] 0.01373164
> result <- round(abs(cor_max - cor_min), 2)
> print(result)
[1] 0.46
📝 13번
city와 f4를 기준으로 f5의 평균값을 구한 다음, f5를 기준으로 상위 7개 값을 모두 더해 출력하시오. (소수점 둘째자리까지 출력)
💻 풀이
> library(dplyr)
> library(readr)
> basic <- read_csv('basic1.csv')
> head(basic)
> basic <- basic %>% group_by(city, f4) %>% summarise(mean=mean(f5, na.rm=T)) %>% arrange(desc(mean)) %>% head(7)
> result <- round(sum(basic$mean), 2)
> print(result)
[1] 643.68
📝 14번
주어진 데이터 셋에서 age컬럼 상위 20개의 데이터를 구한 다음
f1의 결측치를 중앙값으로 채운다. 그리고 f4가 ISFJ와 f5가 20 이상인 f1의 평균값을 출력하시오.
💻 풀이
library(readr)
library(dplyr)
basic <- read_csv('basic1.csv')
head(basic)
basic <- basic %>% arrange(desc(age)) %>% head(20)
basic['f1'] <- ifelse(is.na(basic$f1), median(basic$f1, na.rm=T), basic$f1)
result <- basic %>% filter(f4 == 'ISFJ', f5 >= 20) %>% summarise(mean=mean(f1))
print(result)
# A tibble: 1 x 1
mean
<dbl>
1 73.9
📝 15번
f2가 0값인 데이터를 age를 기준으로 오름차순 정렬하고, 앞에서 부터 20개의 데이터를 추출한 후 f1 결측치(최소값)를 채우기 전과 후의 분산 차이를 계산하시오 (소수점 둘째 자리까지)
💻 풀이
> library(readr)
> library(dplyr)
> basic <- read_csv('basic1.csv')
> head(basic)
> basic <- basic %>% filter(f2 == 0) %>% arrange(age) %>% head(20)
> before_f1 <- var(basic$f1, na.rm=T)
> before_f1 # 351.7636
> basic$f1 <- ifelse(is.na(basic$f1), min(basic$f1, >na.rm=T), basic$f1)
> after_f1 <- var(basic$f1)
> after_f1 # 313.3263
>result <- round(abs(before_f1 - after_f1), 2)
>print(result)
[1] 38.44