📝 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 방식을 이용한 이상치 수 합을 구하시오.
💻 풀이
> 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