본문 바로가기
PYTHON

20200402 - R (데이터 전처리, 변수 간 관계 분석 - 직업별 월급 차이 )

by 낫싱 2020. 4. 2.
728x90
반응형

 

20200402.R
0.01MB
20200402-2.R
0.00MB
Koweps_Codebook.xlsx
0.02MB
아파트_실거래가.csv
0.08MB
역별_주소_및_전화번호.csv
0.00MB
구글키테스트.TXT
0.00MB
작업순서.TXT
0.00MB

 

09-6. 직업별 월급 차이

- " 어떤 직업이 월급을 가장 많이 받을까 ?"

분석 절차

1. 변수 검토 및 전처리

- 직업

- 월급

2. 변수 간 관계 분석

 

class(welfare$code_job) # numeric 확인

table(welfare$code_job) # 각 빈도수 확인

 

2. 전처리

--> 직업 분류코드 목록 불러오기

 

library(readxl)

list_job <- read_excel("C:\\rStudy\\20200402\\Koweps_Codebook.xlsx", col_names =T, sheet=2)

# 컬럼이름을 헤더값으로 불러온다 # sheet 2번을 불러온다.

head(list_job)

대표사진 삭제

사진 설명을 입력하세요.

dim(list_job)

사진 삭제

사진 설명을 입력하세요.

 

welfare <- left_join(welfare, list_job, id="code_job")

# id가 code_job을 기준으로 원래 welfare 파일과 list_job 파일을 join 시키라는 의미

# welfare라는 DF 에도 code_job 이라는 컬럼이 있고, list_job도 code_job 컬럼이 있다.

# 공통적인 기준 필드가 되어서 이 컬럼을 기준으로 합친다.

# welfare의 code_job 컬럼 중 첫 번쨰 값이 942면, list_job의 942와 일치하는 것을

# 찾아서 맞는 값을 넣어준다. 만약 값이 없다면 Na값이 들어가고

# 반대로 welfare에는 없는데 list_job 에는있다면 값이 삽입되지 않는다.

# (left_join 이므로) - 왼쪽 파일을 기준으로 잡는다.

사진 삭제

사진 설명을 입력하세요.

welfare %>%

filter(!is.na(code_job)) %>%

select(code_job, job) %>%

head(10)

대표사진 삭제

사진 설명을 입력하세요.

 

직업별 월급 차이 분석하기

1. 직업별 월급 평균표 만들기

job_income <- welfare %>%

filter(!is.na(job) & !is.na(income)) %>%

group_by(job) %>%

summarise(mean_income = mean(income))

 

전송중...

사진 설명을 입력하세요.

 

2. 상위 10개 추출

top10 <- job_income %>%

arrange(desc(mean_income)) %>%

head(10)

 

전송중...

사진 설명을 입력하세요.

3. 그래프 만들기

ggplot(data=top10, aes(x = reorder(job, mean_income), y=mean_income)) +

geom_col() +

coord_flip() # 이걸 빼면 막대가 세로로 그려진다

 

전송중...

사진 설명을 입력하세요.

4. 하위 10 추출

bottom10 <- job_income %>%

arrange(mean_income) %>%

head(10)

 

전송중...

사진 설명을 입력하세요.

 

5. 그래프 만들기

ggplot(data=bottom10, aes(x = reorder(job, -mean_income), y=mean_income)) +

geom_col() +

coord_flip() + # 이걸 빼면 막대가 세로로 그려진다

ylim(0, 850) # 상위 10개 직업의 연봉과 축을 동일시하기 위해서 맞춤

 

전송중...

사진 설명을 입력하세요.

09-7. 성별 직업 빈도

- "성별로 어떤 직업이 가장 많을까?"

 

분석 절차

1. 변수 검토 및 전처리

- 성별

- 직업

2. 변수 간 관계 분석

- 성별 직업 빈도표 만들기

- 그래프 만들기

 

1. 성별 직업 빈도표 만들기

#남성 직업 빈도 상위 10개 추출

job_male <- welfare %>%

filter(!is.na(job) & sex == "male") %>% # 전체중에 직업 컬럼에서 na가 없는 애들& 성별이 남자인 애들

group_by(job) %>% # 직업별로 그룹을 지정(직업군에 따른 남자의 합산 결과)

summarise(n = n()) %>%

arrange(desc(n)) %>%

head(10)

 

전송중...

사진 설명을 입력하세요.

 

# 여성 직업 빈도 상위 10개 추출

job_female <- welfare %>%

filter(!is.na(job) & sex == "female") %>%

group_by(job) %>% # 직업별로 그룹을 지정(직업군에 따른 여자의 합산 결과)

summarise(n = n()) %>%

arrange(desc(n)) %>%

head(10)

 

전송중...

사진 설명을 입력하세요.

 

2. 그래프 그리기

# 남자 그래프

ggplot(data = job_male, aes(x = reorder(job, n), y=n)) +

geom_col() +

coord_flip()

 

전송중...

사진 설명을 입력하세요.

 

#여성 그래프

ggplot(data = job_female, aes(x = reorder(job, n), y=n)) +

geom_col() +

coord_flip()

 

전송중...

사진 설명을 입력하세요.

 

09-8. 종교 유무에 따른 이혼율

-"종교가 있는 사람들이 이혼을 덜 할까?"

분석 절차

1. 변수 검토 및 전처리

- 종교

- 혼인 상태

2. 변수 간 관계 분석

- 종교 유무에 따른 이혼율 표 만들기

- 그래프 만들기

 

1. 변수 검토하기

class(welfare$religion) # numeric

table(welfare$religion) # 1 : 8047, 2 : 8617

 

2. 전처리

# 종교 유무 이름 부여

welfare$religion <- ifelse(welfare$religion == 1, "yes", "no")

table(welfare$religion) # no : 8617, yes : 8047

 

혼인상태 변수 검토 및 전처리하기

1. 변수 검토하기

class(welfare$marrige) # numeric

 

2. 전처리

# 이혼 여부 변수 만들기

welfare$group_marriage <- ifelse(welfare$marrige == 1, "marriage",

ifelse(welfare$marrige == 3, "divorce", NA))

 

전송중...

사진 설명을 입력하세요.

 

3. 그래프 그리기

qplot(welfare$group_marriage)

 

전송중...

사진 설명을 입력하세요.

종교 유무에 따른 이혼율 분석하기

1. 종교 유무에 따른 이혼율 표 만들기

religion_marriage <- welfare %>%

filter(!is.na(group_marriage)) %>%

summarise(n = n()) %>% # 개수 뽑기

mutate(tot_group = sum(n)) %>%

mutate(pct = round(n/tot_group*100, 1))

 

전송중...

사진 설명을 입력하세요.

#count() 활용

religion_marriage <- welfare %>%

filter(!is.na(group_marriage)) %>%

count(religion, group_marriage) %>%

group_by(religion) %>%

mutate(pct=round(n/sum(n)*100,1))

 

전송중...

사진 설명을 입력하세요.

 

2. 이혼율 표 만들기

#이혼 추출

divorce <-religion_marriage %>%

filter(group_marriage == "divorce") %>%

select(religion, pct)

 

전송중...

사진 설명을 입력하세요.

3. 그래프 만들기

ggplot(data = divorce, aes(x=religion, y=pct)) + geom_col()

 

전송중...

사진 설명을 입력하세요.

 

연령대 및 종교 유무에 따른 이혼율 분석하기

1. 연령대별 이혼율 표 만들기

ageg_marriage <- welfare %>%

filter(!is.na(group_marriage)) %>%

group_by(ageg, group_marriage) %>%

summarise(n = n()) %>%

mutate(tot_group = sum(n)) %>%

mutate(pct = round(n/tot_group*100, 1))

 

 

전송중...

사진 설명을 입력하세요.

 

#count() 활용

ageg_marriage <- welfare %>%

filter(!is.na(group_marriage)) %>%

count(ageg, group_marriage) %>%

group_by(ageg) %>%

mutate(pct = round(n/sum(n)*100, 1))

 

 

전송중...

사진 설명을 입력하세요.

2. 연령대별 이혼율 그래프 만들기

# 초년 제외, 이혼 추출

ageg_divorce <- ageg_marriage %>%

filter(ageg != "young" & group_marriage == "divorce") %>%

select(ageg, pct)

 

전송중...

사진 설명을 입력하세요.

 

# 그래프 만들기

ggplot(data = ageg_divorce, aes(x=ageg, y=pct)) +geom_col()

 

전송중...

사진 설명을 입력하세요.

 

3. 연령대 및 종교 유무에 따른 이혼율 표 만들기

# 연령대, 종교유무, 결혼상태별 비율표 만들기

ageg_religion_marriage <- welfare %>%

filter(!is.na(group_marriage) & ageg != "young") %>%

group_by(ageg, religion, group_marriage) %>%

summarise(n = n()) %>%

mutate(tot_group = sum(n)) %>%

mutate(pct = round(n/tot_group*100,1)) # pct 는 % 약자

 

전송중...

사진 설명을 입력하세요.

# count() 활용

ageg_religion_marriage <- welfare %>%

filter(!is.na(group_marriage) & ageg != "young") %>%

count(ageg, religion, group_marriage) %>%

group_by(ageg, religion) %>%

mutate(pct = round(n/sum(n)*100, 1))

 

전송중...

사진 설명을 입력하세요.

 

연령대 및 종교 유무별 이혼율 표 만들기

df_divorce <- ageg_religion_marriage %>%

filter(group_marriage == "divorce") %>%

select(ageg, religion, pct)

 

전송중...

사진 설명을 입력하세요.

 

4. 연령대 및 종교 유무에 따른 이혼율 그래프 만들기

ggplot(data = df_divorce, aes(x=ageg, y=pct, fill = religion)) +

geom_col(position = "dodge")

 

전송중...

사진 설명을 입력하세요.

 

09-9. 지역별 연령대 비율

- " 노년층이 많은 지역은 어디일까?"

1. 변수 검토 및 전처리

- 지역

- 연령대

2. 변수 간 관계 분석

- 지역별 연령대 비율

- 그래프 만들기

 

[지역(code_region) 별 연령대 비율 분석하기]

1 "서울",

2 "수도권(인천/경기",

3 "부산/경남/울산",

4 "대구/경북",

5 "대전/충남",

6 "강원/충북",

7 "광주/전남/전북/제주도"

 

1. 지역 변수 검토하기

table(welfare$code_region) # 1, 2, 3, 4번 등 각 지역 빈도수 확인

class(welfare$code_region) # character

table(welfare$age) # 나이 빈도수 확인

 

2. 전처리

list_region <- data.frame(code_region=c(1:7),

region = c("서울",

"수도권(인천/경기",

"부산/경남/울산",

"대구/경북",

"대전/충남",

"강원/충북",

"광주/전남/전북/제주도"))

 

전송중...

사진 설명을 입력하세요.

 

welfare <- left_join(welfare, list_region, id="code_region")

 

welfare %>%

select(code_region, region) %>%

head # 잘 실행 되었는지 확인하는 코드

 

전송중...

사진 설명을 입력하세요.

 

1. 지역별 연령대 비율 표 만들기

region_ageg <- welfare %>%

group_by(region, ageg) %>%

summarise(n=n()) %>%

mutate(tot_group = sum(n)) %>%

mutate(pct=round(n/tot_group*100,2))

 

head(region_ageg)

 

전송중...

pct를 모두 더했을 때 100%를 만족해야 한다.

fct 의 의미는 factor 의 약자.(팩터형을 의미함)

 

#count() 활용

region_ageg <- welfare %>%

count(region, ageg) %>%

group_by(region) %>%

mutate(pct = round(n/sum(n)*100,2))

 

전송중...

사진 설명을 입력하세요.

2. 그래프 만들기

ggplot(data = region_ageg, aes(x=region, y=pct, fill=ageg))+

geom_col()+

coord_flip()

 

전송중...

사진 설명을 입력하세요.

3. 막대 정렬하기 : 노년층 비율 높은 순

#노년층 비율 내림차순 정렬

list_order_old <- region_ageg %>%

filter(ageg == "old") %>%

arrange(pct)

 

전송중...

사진 설명을 입력하세요.

# 지역명 순서 변수 만들기

order <- list_order_old$region

 

4. 그래프 그리기

ggplot(data = region_ageg, aes(x = region, y=pct, fill=ageg)) +

geom_col()+

coord_flip()+

scale_x_discrete(limits=order)

 

전송중...

사진 설명을 입력하세요.


#########################홍대 주변 아파트 가격예측############################

 

전송중...

사진 설명을 입력하세요.

 

 

전송중...

사진 설명을 입력하세요.

 

 

전송중...

사진 설명을 입력하세요.

# 주제 : 지하철역 주변 아파트 가격 알아보기

 

#-------------------------------------------------------

# 내용 :

# 지하철 주변의 아파트 시세를 알아보고

# 지하철역에서 아파트까지의 거리에 따라

# 가격분포가 어떻게 다른 지를 비교.

 

#-------------------------------------------------------

# 결과 시각화 :

# 구글 지도를 활용하여 서울시 지도에

# 지하철역과 주변 아파트 실거래가 표시

 

#-------------------------------------------------------

# 주의 사항

# Google Map Platform 출시로 인해 ggmap 패키지 변경됨

 

# 구글 API 키가 반드시 필요.

googleAPIkey = "본인의 API 키 입력"

 

#-------------------------------------------------------

# 활용 데이터

 

# 지하철역 주소 정보 : 서울 열린 데이터 광장

# URL : http://data.seoul.go.kr

# URL2 : http://data.seoul.go.kr/dataList/datasetView.do?infId=OA-12035&srvType=S&serviceKind=1

 

# 국토교통부 실거래가 공개 시스템

# URL : http://rtdown.molit.go.kr

 

# Google Maps Platform

# URL : https://cloud.google.com/maps-platform

 

 

#####################################################

# 1. 공공데이터 다운로드

# 1-1. 지하철역 정보 다운로드 및 전처리

# 1-2. 아파트 실거래가

# 1-3. 구글 지도 정보

 

# 2. 지하철역 데이터 가공하기

# 2-1. 원시 데이터 가져오기

# 2-2. 지하철역 좌표 정보 구하기

 

# 3. 아파트 실거래가 데이터 가공하기

# 3-1. 전용면적별 거래 가격

# 3-2. 아파트 단지별 평균 거래 금액

# 3-3. 시군구와 번지를 하나로 합치기

# 3-4. 좌표 정보 추가 후, 최종 데이터 만들기

 

# 4. 아파트 실거래가 데이터 가공하기

# 4-1. 마포구 지도 가져오기

# 4-2. 지하철역 위치 및 아파트 가격 정보 표시하기


#install_github() 사용을 위한 devtools 설치 및 로드

install.packages("devtools") #깃헙에 올라온 패키지들을 받으려면 devtools 라는 패키지가 필요하기 때문에 먼저 설치해준다.

library(devtools)

 

# github에서 ggmap 패키지 설치 및 로드

install_github("dkahle/ggmap") # devtools 가 있어야 이 패키지를 다운받을 수 있다.

 

# 또는 install.packages("ggmap") : 이 의미는 미러사이트를 통해서 설치하겠다는 의미

library(ggmap)

 

# dplyr 패키지 설치 및 로드

install.packages("dplyr")

library(dplyr)

 

#####################################################

# 2. 지하철역 데이터 가공하기

 

#-------------------------------------------------------

# 2-1. 원시 데이터 가져오기

# csv 파일을 가져와서 station_data 변수에 할당

 

station_data <- read.csv("C:\\rStudy\\20200402\\역별_주소_및_전화번호.csv")

 

# station_data의 "구주소"컬럼 속성 : Factor

# station_data 속성 확인

 

str(station_data)

 

#-------------------------------------------------------

# 2-2. 지하철역 좌표 정보 구하기

 

# as.character() 함수로 문자형으로 변환한 후 station_code에 할당

station_code <- as.character(station_data$"구주소")

 

# google api key 등록

googleAPIkey <- "본인 API 키 번호 입력"

register_google(googleAPIkey)

 

# geocode() 함수로 station_code 값을 위도와 경도로 변환

station_code <- geocode(station_code) # 여기가 5분정도 시간 걸리는 부분

 

# station_code 데이터 앞부분 확인

head(station_code)

 

 

전송중...

사진 설명을 입력하세요.

 

#------------------------------------------------------------------

# 일부 데이터가 NA 값으로 나올 경우에는

# 아래처럼 인코딩을 변경하여 다시 좌표정보를 구한다.

 

# 2-3. 지하철역 좌표 정보 구하기

 

# 문자형으로 변환하고 utf8로 변환한 후 위도와 경도로 변환

# 51개의 주소값을 utf8로 변환하고 geocode() 로 전달한다.

station_code <- as.character(station_data$"구주소") %>% enc2utf8() %>% geocode()

 

# station_code 데이터 앞부분 확인

head(station_code)

 

전송중...

사진 설명을 입력하세요.

 

#------------------------------------------------------------------

# 기존 station_data 에 위도/경도 정보를 추가.

# station_data와 station_code를 합친 후 station_code_final 에 할당

station_code_final <- cbind(station_data, station_code)

 

# station_code_final 의 앞부분 확인

head(station_code_final)

 

전송중...

사진 설명을 입력하세요.

 

####################################

# 3. 아파트 실거래가 데이터 가공하기

#--------------------------------------------

# 3-1. 전용 면적별 거래 가격

 

# csv 파일을 가져와서 apart_data변수에 할당

apart_data <- read.csv("C:\\rStudy\\20200402\\아파트_실거래가.csv")

 

#apart_data 앞부분 데이터 확인

head(apart_data)

 

전송중...

사진 설명을 입력하세요.

#ceiling() / floor()

# 전용면적의 값을 반올림하여 정수로 표현

apart_data$전용면적 = round(apart_data$전용면적)

 

# 데이터 앞부분 확인

head(apart_data)

 

전송중...

사진 설명을 입력하세요.

 

#count() : 지정한 집단별 행의 갯수

# count(데이터셋, 컬럼명)

# arrange() : 기본형(오름차순) / arrange(desc()) 를 이용하면 내림차순 정렬 가능

 

# 전용면적을 기준으로 빈도를 구한 후 빈도에 따라 내림차순 정렬

count(apart_data, 전용면적) %>% arrange(desc(n))

 

전송중...

사진 설명을 입력하세요.

# 전용면적이 85인 데이터만 추출하여 apart_data_85에 할당

apart_data_85 <- subset(apart_data, 전용면적="85") #subset은 ifelse 가 필요없다. 딱 맞는 값만 꺼내주기 때문.

 

전송중...

사진 설명을 입력하세요.

 

#----------------------------------------------

# 3-2. 아파트 단지별 평균 거래 금액

 

# 쉼표를 공백("")으로 대체하여 제거

# gsub 함수는 내가 원하는 곳에서 내가 지정한 값이 있으면(",") 원하는 값으로("") 교체시킬 수 있다.

apart_data_85$거래금액 <- gsub(",", "", apart_data_85$거래금액)

 

# 결과 확인하기

head(apart_data_85)

 

전송중...

거래금액의 ',' 가 사라진 것을 확인할 수 있다.

 

# 거래 금액을 정수형으로 변환하여 : as.integer(거래금액)

# 단지명별 평균을 구한 후, mean(as.integer(거래금액)~단지명) # 평균 거래값

# apart_data_85_cost 변수에 할당.

 

# aggregate() : R 내장 함수. 그룹별로 묶어서 연산할 때 사용. # group_by 라는 함수는 필요없게 된다.

# aggregate(집계할 내용, 데이터셋, 집계함수)

# 집계할 내용 : 연산컬럼명~기준컬럼명

 

apart_data_85_cost <- aggregate(as.integer(거래금액)~단지명,

apart_data_85,

mean)

 

전송중...

컬럼명이 as.integer(거래금액) 으로 만들어진다.

# "as.integer(거래금액)"을

# "거래금액"으로 변경하여 저장

# rename(데이터 셋, "변경 후 이름" = "변경 전 이름")

apart_data_85_cost <- rename(apart_data_85_cost,

"거래금액" = "as.integer(거래금액)")

 

전송중...

사진 설명을 입력하세요.

 

# 단지명이 중복된 행을 제거하고, duplicated(apart_data_85$단지명)

# apart_data_85 에 저장

 

# duplicated() : 중복 행 제거 함수

# 중복 된 값(TRUE) / 처음 나오는 값(FALSE)

# FALSE 에 해당하는 값들을 배열로 반환

 

apart_data_85 <- apart_data_85[!duplicated(apart_data_85$단지명),]

 

#결과 확인하기

head(apart_data_85)

 

전송중...

사진 설명을 입력하세요.

# "단지명"을 기준으로

# 중복 제거한 데이터셋(apart_data_85)에

# 평균 거래 금액 데이터 셋(apart_data_85_cost) 합치기

 

# 이 때 left_join() 함수를 사용.

# left_join(데이터 셋, 데이터 셋, 기준컬럼)

# 합한 후, 동일한 컬럼명이 존재할 경우,

# 컬럼명_x, 컬럼명_y 형태로 자동 구분.

head(apart_data_85_cost) : 컬럼명 확인

head(apart_data_85) : 컬럼명 확인

 

전송중...

사진 설명을 입력하세요.

 

전송중...

사진 설명을 입력하세요.

 

apart_data_85 <- left_join(apart_data_85,

apart_data_85_cost,

by="단지명")

 

#결과 확인하기

head(apart_data_85)

 

전송중...

사진 설명을 입력하세요.

 

# 평균 거래금액("거래금액.y")을 이용하여 시각화 작업을 할 예정.

# "단지명", "시군구", "번지", "전용면적", "거래금액.y" 만 추출하고 저장

 

apart_data_85 <- apart_data_85 %>% select("단지명",

"시군구",

"번지",

"전용면적",

"거래금액.y")

 

 

전송중...

사진 설명을 입력하세요.

# "거래금액.y"를 "거래금액"으로 변경한 후 저장

apart_data_85 <- rename(apart_data_85,

"거래금액" = "거래금액.y")

 

head(apart_data_85)

 

전송중...

사진 설명을 입력하세요.

#-------------------------------------------------------------

# 3-3. 시군구와 번지를 하나로 합치기

 

# 테스트 코드

# "시군구"와 "번지"열을 합친 후, : paste(컬럼명, 컬럼명)

# apart_address에 저장

# 주의 사항 : paste() 함수를 이용하면 컬럼과 컬럼 사이에 공백 발생.

# 공백 없이 합할 경우 : paste0() 함수를 사용.

 

#시군구와 번지를 합친 것을 데이터프레임 형태로 생성하고 그 값을 apart_address 로 할당

apart_address <- paste(apart_data_85$시군구,

apart_data_85$번지) %>% data.frame()

 

전송중...

컬럼명을 만들지 않아서 '.' 이 찍힌다.

#"," 을 "주소"로 변경하여 저장

apart_address <- rename(apart_address, "주소"=".")

 

# 결과 확인하기

head(apart_address)

 

전송중...

사진 설명을 입력하세요.

#------------------------------------------------------------

# 3-4. 좌표 정보 추가 후, 최종 데이터 만들기

 

# 아파트 주소를 위/경도로 변환하여

# apart_address_code 에 저장

 

apart_address_code <- as.character(apart_address$"주소") %>% enc2utf8() %>% geocode()

 

View(apart_address_code)

 

# 데이터 세트를 합친 후,

# apart_data_85 : 단지명, 전용면적, 거래금액(평균거래금액) 추출

# apart_address : 주소 추출

# apart_address_code : 위도, 경도 추출

# 일부 열만 apart_code_final에 저장

 

apart_code_final <- cbind(apart_data_85,

apart_address,

apart_address_code) %>% select("단지명",

"전용면적",

"거래금액",

"주소",

lon, lat)

head(apart_code_final)

 

전송중...

사진 설명을 입력하세요.

######################################

# 4. 구글 지도에 지하철역과 아파트 가격 표시하기

#--------------------------------------------------------

# 4-1. 마포구 지도 가져오기

# 마포구 지도 정보를 가져와 mapo_map에 저장

 

mapo_map <- get_googlemap("mapogu", #마포구를 검색

maptype = "roadmap", # 도로지도를 요청

zoom=12) # zoom=12 를 안쓰면 완전히 축소해서 출력함(12배 확대한다고 설정)

 

# 구글 지도 호출

ggmap(mapo_map)

 

전송중...

사진 설명을 입력하세요.

# 4-2. 지하철역 위치 및 아파트 가격 정보 표시하기

# ggplot2 패키지 설치

install.packages("ggplot2")

# ggplot2 패키지 로드

library(ggplot2)

 

# 지하철역 위치 표시 및 역명 표시

ggmap(mapo_map) + # 지도를 먼저 그리고

geom_point(data = station_code_final, # 빨간 점으로 위도경도값을 찍어주고

aes(x=lon, y=lat),

colour = "red",

size=3) +

geom_text(data = station_code_final, # 그 위에다가 글씨를 쓰라는 의미

aes(label = 역명, vjust = -1))

# -1이 역명이 위에 찍힐지 아래에 찍힐지를 정하는 기능임.(geom_text 함수를 help로 찾아서 옵션값이 어느 것을 허용하는지 찾아봐야 함)

# v(버티컬) hjust(호리즌탈), 0으로 하면 빨간색 위치, 1로하면 반대로

 

전송중...

사진 설명을 입력하세요.

# 홍대입구역 지도 정보를 가져와 hongdae_map 변수에 저장

hongdae_map <- get_googlemap("hongdae station",

maptype = "roadmap",

zoom=15)

 

ggmap(hongdae_map) # 그냥 단순 맵 출력

 

전송중...

사진 설명을 입력하세요.

#홍대입구역 지도에 지하철 정보 및 아파트 정보 일괄 표시

ggmap(hongdae_map) +

geom_point(data = station_code_final,

aes(x = lon, y=lat),

colour = "blue",

size=6) +

geom_text(data = station_code_final,

aes(label = 역명, vjust = -1), colour = "red")+

geom_point(data = apart_code_final,

aes(x = lon, y=lat)) +

geom_text(data = apart_code_final,

aes(label=단지명, vjust=-1), colour = "red")+

geom_text(data = apart_code_final,

aes(label = 거래금액, vjust=1), colour="red")

 

전송중...

사진 설명을 입력하세요.

 

 

728x90
반응형

댓글