R 과 데이터분석/[활용] 공동주택 가격 분석

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

JoyfulS 2019. 11. 28. 15:48

 

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 및 통계분석