Q1.
보스턴 데이터의 crim 컬럼 top10 중 10번째 crim 값으로 1~10위의 crim 값을 변경 후
AGE 변수값이 80이상인 행의 crim의 평균을 산출해라
solution )
문제를 보면 어려워 하지말고 한스텝 한스텝씩 진행하세요.
1 step ) 보스턴 data를 crim 칼럼을 기준으로 내림차순정렬한다.
2 step ) 10번째행의 crim 컬럼의 값을구해 1~10번째행의 crim 컬럼의 값을 변경한다.
3 step ) AGE컬럼의 값이 80이상인 행만 남긴다
4 step ) crim 컬럼의 평균을 구한다
이렇게 크게 4스텝으로 나눌 수 있습니다.
코드로 풀이를 보겠습니다
###Boston data를 출력해서 대충 뭐 어떻게 생겼나 한번 살펴봅니다
Boston
###Boston data의 구조를 출력해서 대충 뭐 어떻게 생겼나 한번 살펴봅니다
str(Boston)
###Boston data의 컬럼 이름을 출력해서 대충 뭐 어떻게 생겼나 한번 살펴봅니다
colnames(Boston)
###Boston_crimarr에 Boston data를 crim기준으로 내림차순정렬한 data를 저장합니다.
Boston_crimarr <- Boston %>%
arrange(desc(crim))
###10번째 crim value를 ten_value에 저장합니다
ten_value <- Boston_crimarr$crim[10]
###Boston_crimarr data의 1~10번째 행의 crim 컬럼에 10번째 값을 넣어줍니다
Boston_crimarr[1:10,"crim"] <- ten_value
###age기준으로 80이상의 data만 남깁니다
over_age_80 <- Boston_crimarr %>%
filter(age>=80)
###crim의 평균을 구합니다.
mean(over_age_80$crim)
answer )
5.759387
Q2.
주어진 데이터 첫번째 행 부터 순서대로 80%까지의 데이터를 추출 후
'total_bedrooms' 변수의 결측값(NA)을 'total_bedrooms' 변수의 중앙값으로 대체하고
대체 전의 'total_bedrooms' 변수 표준편차값과
대체 후의 'total_bedrooms' 변수 표준편차 값 산출
solution )
data 경로
https://www.kaggle.com/camnugent/introduction-to-machine-learning-in-r-tutorial
###data를 가져옵니다
df <- data
###80%의 행을 들고 옵니다
number <- nrow(df)*0.8
df_new <- df[1:number,]
###NA가 얼마나 있는지 확인합니다
sum(is.na(df_new$total_bedrooms))
###대체전 std를 구합니다
pre_sd <- sd(df_new$total_bedrooms,na.rm=T)
###NA가 있는 위치에 TRUE 아닌곳에 FALSE를 나타내는 벡터를 만듭니다
bool_na<- is.na(df_new$total_bedrooms)
###bool_na를 이용해 결측치를 median 값으로 채웁니다
df_new$total_bedrooms[bool_na] <- median(df_new$total_bedrooms,na.rm=T)
###채워졌나 확인합니다
sum(is.na(df_new$total_bedrooms))
###결측치 대체후 std값을 구합니다
aft_sd <- sd(df_new$total_bedrooms,na.rm=T)
###차이를 구합니다.
pre_sd-aft_sd
answer)
1.975147
Q3.
몰라서 비슷하게 출제
iris data에서 Sepal.Length 컬럼의 이상치를 없애고난 전과 후의 평균값의 차이는? 절대값으로 나타내라
이상치는 평균+1.5시그마, 평균-1.5시그마 범위를 벗어나는 data로 한다
solution )
###이상치 제거전 data를 이용해 평균을 구합니다
pre_mean <- mean(iris$Sepal.Length)
###std를 구하고 1.5를 곱해 1.5 sigma를 만들어 줍니다
std <- sd(iris$Sepal.Length)
std_15 <- std*1.5
###평균에 1.5시그마를 더하고 빼주어 범위의 숫자를 만들어줍니다
upper <- pre_mean+std_15
lower <- pre_mean-std_15
###범위를 넘는 data에 TRUE를 반환 아니면 FALSE를 반환하게 해줍니다
rem <- (iris$Sepal.Length>=upper)|(iris$Sepal.Length<=lower)
###bool indexing을 통해 이상치제거 data를 이용해 이상치제거후 평균을 구합니다
aft_mean <- mean(iris$Sepal.Length[!rem])
###data를 빼고 답을 구합니다
abs(pre_mean-aft_mean)
answer)
0.05728682
이렇게 간단하게 구할 수 있습니다.
'빅데이터분석기사' 카테고리의 다른 글
빅분기 ) 빅분기 3회 모의고사 기출 풀어보기 작업형1유형 with R (1) | 2023.10.18 |
---|---|
빅분기 ) 빅분기 4회 실기 기출 풀어보기 작업형1유형 with R (0) | 2023.10.07 |
빅분기 ) 빅분기 3회 실기 기출 풀어보기 작업형1유형 with R (0) | 2023.07.23 |
댓글