purrr 바닷속의 진주를 찾아 낸다고 표현 해야 할까? 서울에는 수업이 많은 아파트 단지들이 있다. 그 아파트 단지 중에서, 가장 추세적으로 잘 오르는 곳, 아니면 그러하지 아니 한 곳을 찾아 볼 수 있을 수 있다. 어찌 되었든 30년 간 서울에서 살았던 나는 한 가지는 확실히 알고 있다. 서울에는 항상 부자들만 살고 있지 않다. 빈부의 격차가 있다는 이야기이다 . 이번에는 평당 가격 가지고 논의 하겠다.
1. 데이터 불러오기 및 탐색
library(rio)
library(dplyr)
library(readxl)
library(httr)
# 파일을 불러오는 path를 url 변수로 정의
url = "https://drive.google.com/u/0/uc?id=1JE-OQNMws1HfVWKCSX4JFwHBUPgnQzP8&export=download"
GET(url, write_disk(tf <- tempfile(fileext = ".xlsx")))
## Response [https://doc-0s-58-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/q8qtsj6d15mhkh8l5im60pdeqdrvnims/1625579250000/07297316292192978319/*/1PT_0-xJvM9KGp5zzx1jjcPAaS25epx4l?e=download]
## Date: 2021-07-06 13:48
## Status: 200
## Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
## Size: 18.6 MB
## <ON DISK> /tmp/Rtmp4IrrFt/filec844a09097b.xlsx
apt <- read_excel(tf, 1L) # 1L은 sheet 1을 이야기 하는 것이다.
apt_df <- apt
# 데이터를 평당 가격을 구한다.
apt <- apt %>%
group_by(단지명, 계약일자) %>%
summarise(전용면적_m3 =sum(전용면적_m3),
거래금액_만원 = sum(거래금액_만원)) %>%
mutate(평당가격 = 거래금액_만원/(전용면적_m3/3.3)) %>%
mutate(계약일자 = as.Date(계약일자 , "%Y%m%d"))
전처리 하면서 고민 하였던 것이 데이터 관측치의 갯수 였다. 앗 그런데, 문제가 생겼다. 1000번 가까이 거래한 아파트 단지가 있는 것이다.
# 데이터 탐색
apt_count <- apt %>%
group_by(단지명) %>%
count()
# 어 데이터가
apt_count %>%
ggplot(aes(n)) +
geom_histogram()
그래프가 1000까지 눈금이 그려진 이유는 최대 값이 1,000건 값이 있다는 것이다.
즉 동이 다른데, 단지명이 같은 곳이 많다는 것이다. 그래서 아래와 시군구로 바꾸고, 번지, 단지명도 그룹화 시키고 거래는 최소 7개 이상 하였다. 비교 할 수 있는 아파트가 적어 질 것 같다.
2. 데이터 전처리
시군구, 번지, 단지명을 그룹화 시키고 연산 하려면, 코드화 시키는 것이 좋다.
# 아파트 번호를 만듦
apt <- apt_df
apt_number <- apt %>%
group_by(시군구, 단지명, 번지) %>%
count()
apt_number$NO <- as.character( c(1: nrow(apt_number)) + 10000)
# 아파트 번호inner_join
apt <- apt %>%
inner_join(apt_number, by = c("시군구", "번지", "단지명"))
# 아파트 시군구 단지별 시리얼 번호를 만듦
apt_df <- apt
# 데이터를 전처리 한다.
apt <- apt %>%
group_by(NO, 계약일자) %>%
summarise(전용면적_m3 =sum(전용면적_m3),
거래금액_만원 = sum(거래금액_만원),
) %>%
mutate(평당가격 = 거래금액_만원/(전용면적_m3/3.3)) %>%
mutate(계약일자 = as.Date(계약일자 , "%Y%m%d"))
# 시군구 번지, 단지명에서 거래량이 7개 이상인 것으로 정리
apt_count <- apt %>%
group_by(NO) %>%
count() %>%
filter( n > 6)
# 데이터 필터링 7개 이상인것 left_join
apt <- apt %>%
left_join(apt_count , by =c("NO")) %>%
filter(!is.na(n))
위와 같이 "시군구, 단지명, 번지"를 묶어서, NO로 코드를 표준화 한다. 즉 서울에 있는 아파트를 표준화 하는 작업이다. 표준화 하면서 독립 적인 코드를 만들면, 위치도 정확 하게 추정할 수 있고, 가격에 대한 집계나 거래량도 정확하게 파악 할 수 있다.
기술적으로 설명하면, 아파트 "시군구, 단지명, 번지"를 그룹화 한 후에, 각각에 시리얼 번호를 1만 자리로 구하였다.
그리고, 같은 날에 2번 이상 거래되는 단지가 있어서, 평당 정확한 거래단가를 구하기 위해 거래금액 과 전용면적을 더한 다음 평당 가격으로 나누었다.
그런 다음 7개 이상인 것을 필터링 하였다.
오늘은 여기 까지만 하고 다음 편을 계속 이어서 하겠다.
댓글 없음:
댓글 쓰기