1차 정리된 파일 불러와서 자료 가공하기

기본 설정

setwd("~/Rclass/")

설정된 작업 디렉토리를 확인하는 방법은 ‘getwd()’ 입니다.

getwd()
## [1] "D:/OneDrive - hufs.ac.kr/Workspace_hufs/Rclass/Ehwa_240227"

위와 같이 “D:/Rclass/”가 작업 디렉토리로 설정된 것을 볼 수 있습니다.

다음으로는 분석에 필요한 라이브러리를 로드해줍니다.

library("lubridate")
## 
## 다음의 패키지를 부착합니다: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
library("plyr")
library("openair")

aero.meteo.CSV 불러오기 * aero.meteo.CSV 자료는 sample_data.csv

aero.meteo = read.csv(file = "sample_data.csv", header = TRUE)
aero.meteo$date = as.POSIXct(aero.meteo$Time, tz = "Asia/Seoul")
aero.meteo$date[1:10]
##  [1] "2020-12-15 00:00:00 KST" "2020-12-15 01:00:00 KST"
##  [3] "2020-12-15 02:00:00 KST" "2020-12-15 03:00:00 KST"
##  [5] "2020-12-15 04:00:00 KST" "2020-12-15 05:00:00 KST"
##  [7] "2020-12-15 06:00:00 KST" "2020-12-15 07:00:00 KST"
##  [9] "2020-12-15 08:00:00 KST" "2020-12-15 09:00:00 KST"

역궤적 자료 처리 및 기존 자료와 합치기

  • 역궤적 자료는 trajectories.zip

  • 기본적으로 linux shell scipt 기반으로 합치는 것이 빠르로 편함

gawk '$1 == 1 && $2 == 1 {print $0}' 2020*.txt > ../bulgwang.traj

윈도우에서 리눅스 쓰는 방법!

    1. Windows 10에서 PowerShell(x64)을 관리자 권한으로 실행하고 아래 명령어를 실행한다.
-    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    1. WSL이 설치가 완료되면 재부팅 하라는 메세지가 뜬다. 간단히 재부팅…
    1. 마이크로소프트 스토어에 들어가 Ubuntu를 찾아 설치한다.
    1. 설치가 완료되면 ‘실행’ 버튼을 눌러 설치를 마무리.
    1. PowerShell이 뜨고 설치가 마무리되게 된다. 바로 사용을 위한 계정 생성 프롬프트를 볼 수 있는데 원하는 user name과 passwd를 설정하면 바로 사용이 가능하다.
  • 하지만, r로도 합칠 수 있음! (수십배는 시간걸림)
flist = list.files(path = "trajectories/", pattern = "txt")
all.dat = data.frame()

for (fn in 1:length(flist)){
  DAT = read.table(file = paste0("trajectories/", flist[fn]), skip = 11)
  all.dat = rbind(all.dat, DAT)
}
traj = read.table("bulgwang.traj", header = F)
traj$V3 = traj$V3 + 2000
traj$date2 = paste0(traj$V3,traj$V4,traj$V5) # 간단한 날짜 형식으로 변환 (아직 날짜로 인식은 X)
traj$date2 = as.POSIXct(traj$date2, format = "%Y%m%d") + hours(traj$V6 + 9) # 날짜로 인식
traj$date2[1:10] #end point의 시간
##  [1] "2020-12-15 00:00:00 KST" "2020-12-14 23:00:00 KST"
##  [3] "2020-12-14 22:00:00 KST" "2020-12-14 21:00:00 KST"
##  [5] "2020-12-14 20:00:00 KST" "2020-12-14 19:00:00 KST"
##  [7] "2020-12-14 18:00:00 KST" "2020-12-14 17:00:00 KST"
##  [9] "2020-12-14 16:00:00 KST" "2020-12-14 15:00:00 KST"
  • 역궤적 출발시간을 date 열로 붙이기!
traj$date = traj$date2 - hours(traj$V9)
traj$date[1:10]
##  [1] "2020-12-15 KST" "2020-12-15 KST" "2020-12-15 KST" "2020-12-15 KST"
##  [5] "2020-12-15 KST" "2020-12-15 KST" "2020-12-15 KST" "2020-12-15 KST"
##  [9] "2020-12-15 KST" "2020-12-15 KST"
  • 역궤적 열 이름을 붙여주기
colnames(traj)
##  [1] "V1"    "V2"    "V3"    "V4"    "V5"    "V6"    "V7"    "V8"    "V9"   
## [10] "V10"   "V11"   "V12"   "V13"   "date2" "date"
traj = traj[,c(-1,-7,-8)]
colnames(traj)[1:10] = c("receptor", "year", "month", "day", "hour", "hour.inc", "lat", "lon", "height", "pressure")
  • 역궤적 (traj)와 측정자료 (aero) 합치기
aero.traj = merge(traj, aero.meteo[,c(6:16,26)], by = "date", all = T)

역궤적 군집분석 및 PSCF, CWT

  • trajCluster 함수를 이용 | argument | 설명| |:-| :- | |traj| 앞에서 만든 역궤적 파일| |method | 군집분석 방법 “Euclid” 또는 “Angle”| |n.cluster| 원하는 군집의 수| |type | 구분하고 싶은 자료의 특성 “season”, “year”, “weekday” | |orientation| 지도 회전 반경, c(45, 0, 30)과 같은 형식으로 입력|
clust = trajCluster(traj, n.cluster = 5)
## Warning in trajCluster(traj, n.cluster = 5): Trajectory lengths differ, using
## most common length.

clust = trajCluster(traj, n.cluster = 5, orientation = c(45, 0, 90))
## Warning in trajCluster(traj, n.cluster = 5, orientation = c(45, 0, 90)):
## Trajectory lengths differ, using most common length.