정선해양관측자료 10년 데이터 통합 및 헤더명 수정 후 CSV 파일로 저장하기
- 기간 : 2011년~2021년
# 10년치 관측자료 내려받기
관측자료 출처 : https://www.nifs.go.kr/kodc/soo_list.kodc
-> 최대 1년치 자료만 받을 수 있으므로 1년단위로 검색하여 엑셀파일로 내려받기
```{r}
library(tidyverse); library(readxl); library(data.table); library(lubridate)
```
# 특정위치 파일리스트 읽어서 한 개 파일로 합치기
(합칠 데이터는 모두 동일한 포맷을 전제하여야 함)
```{r}
start_time <-Sys.time()
dir <-("E:\\r_workspace\\jungsun\\datas")
file_list<-list.files(dir)
data<-data.table()
for(file in file_list) {
#print(file)
temp <- read_xls(paste(dir, sep="/", file), skip=2, col_type="guess", col_names=FALSE, sheet=NULL)
data <- rbind(data,temp)
rm(temp)
#rm 변수를 지우는 것
}
finish_time <-Sys.time()
finish_time - start_time
#read_xls()옵션 중 sheet="정선해양관측정보" 일 경우 에러 발생
head(data)
```
# 헤더명 변경 및 수치형 컬럼 재정의
```{r}
data1<- as.data.frame(data)
str(data1); sapply(data1, class)
names(data1) <-c("sea", "l_name", "s_name", "ls_name", "lat", "lon","daytime","depth","temp","temp_flag", "salinity", "salinity_flag","DO","DO_flag","qc_lvl","PO4P","NO2","NN","SiO2_Si","pH","trans","atmosp","vessel")
str(data1)
data1[, c(5:6,8:22)] <-as.numeric(unlist(data1[,c(5:6,8:22)])) #수치형 컬럼 재정의
str(data1)
```
# lubridate 패키지를 이용하여 년월일 분리컬럼 생성하기
```{r}
library(dplyr)
data1$daytime <-as.POSIXct(data1$daytime, tz="KST")
str(data1)
data1 <-data1 %>% mutate(yr=year(daytime),
mon=sprintf("%02d", month(daytime)),
day=sprintf("%02d", day(daytime)))
data1
```
```{r}
remove(data)
```
# 조건에 맞는 데이터 추출하여 분리하기 (서해, 2011~2020년, 2월, 8월)
```{r}
west_sea<-data1 %>%
filter(sea=="서해", (yr>=2011& yr<2021), depth==0, (mon=="02" | mon=="08")) %>%
arrange(yr, mon, ls_name)
west_sea
w2<-west_sea %>% filter(mon=="02") %>% group_by(ls_name, lat, lon) %>%
summarise(avg_temp=mean(temp, na.ra=T))
w8<-west_sea %>% filter(mon=="08") %>% group_by(ls_name, lat, lon) %>%
summarise(avg_temp=mean(temp, na.ra=T))
fwrite(west_sea, "E:\\r_workspace\\jungsun\\west_sea_28.csv", sep=",", col.name=TRUE)
```
'R 프로그래밍' 카테고리의 다른 글
R 기초 - 동적지도(배경지도) 및 마커표시 (0) | 2022.03.19 |
---|---|
R 응용 - 표층수온분포도 및 수직수온분포도 그리기 (0) | 2022.01.16 |
R 기초 - 통계치 산출 (0) | 2022.01.09 |
R 기초 - 데이터 읽고 객체 정보 확인하기 (0) | 2022.01.09 |