본문 바로가기
R 과 데이터분석/[활용] 공동주택 가격 분석

[R 데이터분석] 공동주택 가격현황분석 - (2) 데이터 전처리

by JoyfulS 2019. 11. 28.

 

R을 이용해 공동주택 가격에 대한 통계분석을 시도해보았습니다.

이번 게시물에서는

 

1. 공동주택에 대한 설명

2. 사용한 데이터에 대한 소개

3. 데이터 전처리

4. EDA

5. 가격의 통계분석

6. 교차분석

7. 추가상관분석 & 회귀분석

 

에 대해 다뤄보겠습니다.

 

 

>> 이전 게시물

[R 데이터분석] 공동주택 가격현황분석 - (1) 개요

 

>> 사용 데이터 파일은 다음 링크를 통해 다운 받으실 수 있습니다.

https://drive.google.com/file/d/1DzOminjLAGnGlEPIj7RkbtYG_U3VMO3y/view?usp=sharing

 


 

#  데이터 불러오기


# 엑셀 파일 불러오기
install.packages("readxl")
library(readxl)

getwd()
setwd("C:/Rwork/Gong")
gongdong <- read_excel("gongdong.xlsx", col_names = FALSE)
View(gongdong)

gongdong_price <- read_excel("gongdong_price.xlsx", col_names = FALSE)
View(gongdong_price)

gongdong_price2 <- read_excel("gongdong_price2.xlsx", col_names = FALSE)
View(gongdong_price2)

 

#  => 칼럼이름 없이 엑셀에 입력 되어있는 공동주택, 공동주택가격 데이터 불러옴

# 불러온 데이터 확인하기
head(gongdong)
head(gongdong_price)
head(gongdong_price2)

str(gongdong) # 155686 obs. of  14 variables:
str(gongdong_price) # 1048576 obs. of  11 variables:
str(gongdong_price2) # 253644 obs. of  11 variables:

# 나눠져있는 price 데이터 합치기
gd_price <- rbind(gongdong_price, gongdong_price2)
str(gd_price) # 1302220 obs. of  11 variables:
1048576 + 253644 # 1302220

# column 이름 넣기
colnames(gongdong) <- c("시도명", "시군구명", "시군구코드", "법정동명", "법정동코드", 
                        "주번지", "부번지", "Y좌표값", "X좌표값", "고유코드", "공동주택명",
                        "공동주택구분", "건축년월", "도로명")
colnames(gd_price) <- c("고유코드", "공동주택명", "공동주택구분", "가격구분", "평형",
                        "대지평형", "계약일", "보증금", "월세", "층", "년월")

# => 의미를 구분할 수 있게 칼럼 이름 추가

head(gongdong)
head(gd_price)


# 두 테이블 '고유코드'로 조인하기
install.packages('dplyr')
library('dplyr')
gd <- inner_join(gongdong, gd_price, by = c("고유코드"="고유코드"))

# 지역정보와 가격 및 평형 데이터를 함께 보기 위해 공통필드인 '고유코드'로 두 데이터 결합


str(gd)


# 가격구분 칼럼의 매매(1), 전세(2), 월세(3)로 나누기
# 형식) df %>% filter(필터조건) -> 행선택 

gd1 <- filter(gd, gd$가격구분=="매매")
gd2 <- filter(gd, gd$가격구분=="전세")
gd3 <- filter(gd, gd$가격구분=="월세")

# 조건대로 잘 나눠졌는지 확인
subset(gd1, select=c("가격구분","시도명"))
subset(gd2, select=c("가격구분","시도명"))
subset(gd3, select=c("가격구분","시도명"))


#----------------------- 사용할 칼럼만 정리하기 -------------------------

# 사용할 칼럼 : 1. 시도명, 2.시군구명, 8.Y좌표값, 9.X좌표값, 
#               12.공동주택구분.x, 13.건축년월,
#               17.가격구분, 18.평형, 21.보증금
colnames(gd1)[c(12)] <- c("공동주택구분")

gd1 <- gd1[,c(1,2,8,9,12,13,17,18,21,23)]

 


# 출력 형태 확인
head(gd1)


 

 

- 앞으로의 과정과 통계분석을 간단히 진행하기 위해서 '전세'와 '월세' 데이터는 필요가 없다고 판단함

- 일단 전세 주택의 가격(보증금)은 매매 주택의 가격(보증금)과 차이가 없었고,

- 월세 주택은 보증금과 월세, 두 칼럼으로 가격이 결정되기 때문에 복잡함

- 월세 주택의 가격을 결정 짓기 어렵지만, 건물의 가격이 비싸면 월세도 비싸지는 것이 보편적이기 때문에 매매 주택만 살펴봐도 괜찮겠다는 결론을 내림

 

- 즉, 매매로 분류된 주택의 가격(보증금)만 가지고 통계분석을 진행할 것

 


 

# 건축년월 칼럼 범주형으로 변경


# 건축년월에 나타나는 0(이상치) 제거
gd1 <- filter(gd1, 건축년월!=0)

# '0'값이 일부 포함되어 있는 것은 이상치라고 판단하고 제거함

# 척도변경(연속형 -> 범주형)
gd1$건축년대[gd1$건축년월 <= 1939] <- 1930
gd1$건축년대[gd1$건축년월 >= 1940 & gd1$건축년월 <= 1949] <- 1940
gd1$건축년대[gd1$건축년월 >= 1950 & gd1$건축년월 <= 1959] <- 1950
gd1$건축년대[gd1$건축년월 >= 1960 & gd1$건축년월 <= 1969] <- 1960
gd1$건축년대[gd1$건축년월 >= 1970 & gd1$건축년월 <= 1979] <- 1970
gd1$건축년대[gd1$건축년월 >= 1980 & gd1$건축년월 <= 1989] <- 1980
gd1$건축년대[gd1$건축년월 >= 1990 & gd1$건축년월 <= 1999] <- 1990
gd1$건축년대[gd1$건축년월 >= 2000 & gd1$건축년월 <= 2009] <- 2000
gd1$건축년대[gd1$건축년월 >= 2010] <- 2010

# 1938년부터 2015년까지의 건축년도 데이터를 10년 단위로 범주화

 

# 평형 칼럼 단위 변경, 범주형으로 변경


# 평형데이터 변경(제곱미터 -> 평수)
gd1$평형 <- (gd1$평형 / 3.305785)

# 원본은 제곱미터 기준이나, 대중적으로 통용되어 익숙한 평 기준으로 변환

# 평형 1평~100평 이외의 이상치 제거
gd1 <- filter(gd1, 평형 >= 1)

# 1평보다 작은 평수는 이상치라고 판단하고 제거


# 척도변경(연속형 -> 범주형)
gd1$평형분류[gd1$평형 < 10] <- "1.초소형"
gd1$평형분류[gd1$평형 >= 10 & gd1$평형 < 24] <- "2.소형"
gd1$평형분류[gd1$평형 >= 24 & gd1$평형 < 40] <- "3.중형"
gd1$평형분류[gd1$평형 >= 40 & gd1$평형 < 60] <- "4.대형"
gd1$평형분류[gd1$평형 >= 60] <- "5.초대형"

# 인터넷 부동산 카페 의견을 참고하여 소형, 중형, 대형 등 평수를 범주화

 

 

 

 

>> 다음 게시물

[R 데이터분석] 공동주택 가격현황분석 - (3) EDA 및 통계분석

 

댓글