# 2-1. (비교용) 국제공항이 위치한 도시 리스트 데이터 불러오기


airport <- read.csv("airport_mini.csv", stringsAsFactors = FALSE)

str(airport)


> airport <- read.csv("airport_mini.csv", stringsAsFactors = FALSE)

> str(airport)

'data.frame':  143 obs. of  3 variables:

 $ X      : int  1 2 3 4 5 6 7 8 9 10 ...

 $ city   : chr w/ 143 levels " "," 마카오",..: 72 101 106 57 13 6 103 ...

 $ airport: chr w/ 143 levels " 싱가포르 창이 국제공항",..: 7 89 91 8 15 79 ...


이전 포스팅에서 완성한 데이터 프레임에서 국제공항이 있는 도시 이름만 추출하기 위하여 모든 도시 이름(과 국제공항)이 담긴 csv 파일을 불러옵니다. 해당 파일은 위키피디아의 정보를 이용해 R로 제작한 파일이며 제작 과정이 궁금하신 분들은 아래 링크를 참조해 주세요.


(참고) [비교용 데이터] 위키피디아 자료로 국가 리스트 csv파일 만들기 (바로가기)




# 2-2. 도시명 최대, 최소 길이 구하기


min(nchar(airport$city))

max(nchar(airport$city))


> min(nchar(airport$city))

[1] 1

> max(nchar(airport$city))

[1] 8


두 데이터를 비교하기 전에 확실하게 비교 대상이 아닌 값, 즉 도시명이 될 수 없는 데이터를 미리 제거해줍니다. 이 과정을 거치면 데이터 처리량이 줄어 소요 시간이 줄어들 것 입니다. 'nchar'와 'min', 'max'를 이용하여 도시 이름의 최소, 최대 길이를 구해 활용하겠습니다. 




# 2-3. 도시명 최대, 최소 길이 맞춰 필터링 전처리


travel_ht08 <- travel_ht07 %>% filter(nchar(tag) >= 1 & nchar(tag) <= 8)

str(travel_ht07)

str(travel_ht08)


> travel_ht08 <- travel_ht07 %>% filter(nchar(tag) >= 1 & nchar(tag) <= 8)

> str(travel_ht07)

'data.frame':  220 obs. of  1 variable:

 $ tag: chr  "그라나다" "Granada" "스페인" "Spai" ...

> str(travel_ht08)

'data.frame':  175 obs. of  1 variable:

 $ tag: chr  "그라나다" "Granada" "스페인" "Spai" ...


2-2. 처리에 의하면 도시명의 길이는 1글자 이상 8글자 이하이므로 'filter' 함수에 해당 조건을 넣어 필터링을 실행합니다. 결과 220개에서 175개로 분석 대상이 줄었음을 알 수 있습니다. 소량의 데이터라 거의 차이가 없지만, 데이터가 많아진다면 분석 시간 등의 차이를 체감하게 될 것입니다.




# 2-4. 도시명 리스트에 있는 단어(도시명)만 추출


travel_ht09 <- intersect(airport$city, travel_ht08$tag)

travel_ht10 <- as.data.frame(travel_ht09, stringsAsFactors = FALSE)

travel_ht11 <- travel_ht10 %>% rename(city = travel_ht09)

travel_ht12 <- travel_ht11 %>% group_by(city) %>% summarise(n())


> travel_ht12

# A tibble: 8 x 2

  city       `n()`

  <chr>      <int>

1 리마               1     

2 밀라노            1      

3 부다페스트      1     

4 브리즈번      1  

양곤               1 

취리히            1

파리               1

8 프라하            1


해시태그 중 국제공항이 있는 도시의 이름에 해당하는 값은 위의 8개입니다. ('intersect' 함수를 사용하여 [추출한 해시태그들이 담긴 데이터 프레임]과 [도시명이 담긴 데이터 프레임]의 교집합을 추출하였습니다) 추가로 'summarise(n())'를 이용하여 단어의 개수도 확인해보았습니다. 한 계정에서 한국어 도시명만 추출하였기에 카운팅을 한 의미는 크게 없지만(...) 추출된 데이터가 많을 때 가장 많이 출력된 값을 찾아내는 데 사용할 수 있을 것 같습니다.



+ Recent posts