-
Notifications
You must be signed in to change notification settings - Fork 0
/
dailly-update-korea.R
122 lines (93 loc) · 4.84 KB
/
dailly-update-korea.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# ----------------------------------------------
# load required packages
# ----------------------------------------------
if(!suppressWarnings(require(httr))) install.packages("httr", repos = "http://cran.us.r-project.org")
if(!suppressWarnings(require(dplyr))) install.packages("dplyr", repos = "http://cran.us.r-project.org")
if(!suppressWarnings(require(jsonlite))) install.packages("jsonlite", repos = "http://cran.us.r-project.org")
if(!suppressWarnings(require(raster))) install.packages("raster", repos = "http://cran.us.r-project.org")
# ----------------------------------------------
# load API KEY
# ----------------------------------------------
# # temp path
# setwd('C:/Users/user/PJT/Study/11.Dashbord/Covid19View')
load('./DATA/environment.Rdata')
# ----------------------------------------------
# OPENAPI GET (Covid Cases)
# ----------------------------------------------
res <- GET(paste0('http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19SidoInfStateJson?serviceKey=',api_key_decode,'&pageNo=1&numOfRows=10&startCreateDt=',format(Sys.Date()-1,'%Y%m%d'),'&endCreateDt=',format(Sys.Date()-1,'%Y%m%d')))
res %>%
content(as ='text', encoding ='UTF-8') %>%
fromJSON() -> json
# str(object = json)
if (json$response$header$resultMsg == "NORMAL SERVICE."){
cat('@ [Success] HTTP Response :',json$response$header$resultMsg,'\n')
}else{
cat('@ [Fail] HTTP Response Error :',json$response$header$resultMsg,'\n')
break()
}
df <- json$response$body$items$item
df$createDt<- as.Date(df$createDt,format='%Y-%m-%d')
columns <- c("stdDay","createDt", "deathCnt", "defCnt" ,"incDec","isolClearCnt","localOccCnt", "overFlowCnt","qurRate","gubun","gubunEn","seq")
# -- Create Total Dataset
load('./DATA/Korea_total_covid19.Rdata')
if(sum(grepl(format(Sys.Date()-1,'%Y-%m-%d'),total$createDt)) == 0){
tmp_row <- df[df[,'gubunEn']=='Total',columns,drop=FALSE]
total <- rbind(tmp_row, total)
total <- total[order(total$createDt,decreasing = TRUE),]
total$createDt <- as.character(total$createDt)
save(total,file='./DATA/Korea_total_covid19.Rdata')
write.csv(total,file='./DATA/Korea_total_covid19.csv',row.names = FALSE,fileEncoding = 'UTF-8')
}
# -- Create Daily Dataset
df <- df[match(df[,'gubunEn'],c('Total','Lazaretto'),nomatch=0) == 0,columns]
load('./DATA/Korea_shp.Rdata')
korea@data <- merge(korea@data,df,by='gubun')
save(df, korea,file='./DATA/Korea_gubun_covid19.Rdata')
# ----------------------------------------------
# OPENAPI GET (GenAge Info)
# ----------------------------------------------
res <- GET(paste0('http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19GenAgeCaseInfJson?serviceKey=',api_key_decode,'&pageNo=1&numOfRows=10&startCreateDt=',format(Sys.Date()-1,'%Y%m%d'),'&endCreateDt=',format(Sys.Date()-1,'%Y%m%d')))
res %>%
content(as ='text', encoding ='UTF-8') %>%
fromJSON() -> json
# str(object = json)
if (json$response$header$resultMsg == "NORMAL SERVICE."){
cat('@ [Success] HTTP Response :',json$response$header$resultMsg,'\n')
}else{
cat('@ [Fail] HTTP Response Error :',json$response$header$resultMsg,'\n')
break()
}
GenAge <- json$response$body$items$item
GenAge$createDt<- as.Date(GenAge$createDt,format='%Y-%m-%d')
GenAge <- GenAge[order(GenAge$createDt,decreasing = TRUE),]
GenAge$gubun[c(9,10,11)] <- c('80 -','female','male')
save(GenAge, file='./DATA/Korea_GenAge.Rdata')
# ----------------------------------------------
# OPENAPI GET (Vaccine Info)
# ----------------------------------------------
# Daily
res <- GET(paste0('https://api.odcloud.kr/api/15077756/v1/vaccine-stat?page=1&perPage=1&cond%5BbaseDate%3A%3AGTE%5D=',format(Sys.Date()-1,'%Y-%m-%d'),'&cond%5Bsido%3A%3AEQ%5D=%EC%A0%84%EA%B5%AD&serviceKey=',api_key_encode))
res %>%
content(as ='text', encoding ='UTF-8') %>%
fromJSON() -> json
# str(object = json)
df <- json$data
df$baseDate<- as.Date(df$baseDate,format='%Y-%m-%d')
# -- Create Total Dataset
load('./DATA/VaccineStat.Rdata')
if(sum(grepl(format(Sys.Date()-1,'%Y-%m-%d'),VaccineStat$baseDate)) == 0){
VaccineStat <- rbind(df, VaccineStat)
VaccineStat <- VaccineStat[order(VaccineStat$baseDate,decreasing = TRUE),]
VaccineStat$baseDate <- as.character(VaccineStat$baseDate)
save(VaccineStat, file='./DATA/VaccineStat.Rdata')
write.csv(VaccineStat, file='./DATA/VaccineStat.csv',row.names = FALSE,fileEncoding = 'UTF-8')
}
# ----------------------------------------------
# Merge (Covid Cases / Vaccine Info)
# ----------------------------------------------
load('./DATA/Korea_total_covid19.Rdata')
load('./DATA/VaccineStat.Rdata')
merged_df <- merge(total, VaccineStat, by.x='createDt' ,by.y='baseDate', all.x=TRUE)
merged_df <- merged_df[order(as.Date(merged_df$createDt),decreasing = TRUE),]
# save(merged_df, file='./DATA/Merged_Data.Rdata')
write.csv(merged_df, file='./DATA/Merged_Data.csv',row.names = FALSE,fileEncoding = 'UTF-8')