讀取登革熱資料
library(readr)
Dengue_Daily <- read_csv("https://od.cdc.gov.tw/eic/Dengue_Daily.csv",
col_types = cols(通報日 = col_date(format = "%Y/%m/%d"),
發病日 = col_date(format = "%Y/%m/%d") ))
str(Dengue_Daily)
## tibble [79,883 × 26] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ 發病日 : Date[1:79883], format: "1998-01-02" "1998-01-03" ...
## $ 個案研判日 : chr [1:79883] "None" "None" "None" "None" ...
## $ 通報日 : Date[1:79883], format: "1998-01-07" "1998-01-14" ...
## $ 性別 : chr [1:79883] "男" "男" "男" "男" ...
## $ 年齡層 : chr [1:79883] "40-44" "30-34" "55-59" "35-39" ...
## $ 居住縣市 : chr [1:79883] "屏東縣" "屏東縣" "宜蘭縣" "高雄市" ...
## $ 居住鄉鎮 : chr [1:79883] "屏東市" "東港鎮" "宜蘭市" "苓雅區" ...
## $ 居住村里 : chr [1:79883] "None" "None" "None" "None" ...
## $ 最小統計區 : chr [1:79883] "A1320-0136-00" "A1303-0150-00" "A0201-0449-00" "A6408-0153-00" ...
## $ 最小統計區中心點X : chr [1:79883] "120.505898941" "120.453657460" "121.751433765" "120.338158907" ...
## $ 最小統計區中心點Y : chr [1:79883] "22.464206650" "22.466338948" "24.749214667" "22.630316700" ...
## $ 一級統計區 : chr [1:79883] "A1320-04-008" "A1303-09-007" "A0201-23-006" "A6408-10-010" ...
## $ 二級統計區 : chr [1:79883] "A1320-04" "A1303-09" "A0201-23" "A6408-10" ...
## $ 感染縣市 : chr [1:79883] "None" "None" "None" "None" ...
## $ 感染鄉鎮 : chr [1:79883] "None" "None" "None" "None" ...
## $ 感染村里 : chr [1:79883] "None" "None" "None" "None" ...
## $ 是否境外移入 : chr [1:79883] "否" "是" "是" "否" ...
## $ 感染國家 : chr [1:79883] "None" "None" "None" "None" ...
## $ 確定病例數 : num [1:79883] 1 1 1 1 1 1 1 1 1 1 ...
## $ 居住村里代碼 : chr [1:79883] "None" "None" "None" "None" ...
## $ 感染村里代碼 : chr [1:79883] "None" "None" "None" "None" ...
## $ 血清型 : chr [1:79883] "None" "第二型" "None" "None" ...
## $ 內政部居住縣市代碼: chr [1:79883] "10013" "10013" "10002" "64" ...
## $ 內政部居住鄉鎮代碼: chr [1:79883] "1001301" "1001303" "1000201" "6400800" ...
## $ 內政部感染縣市代碼: chr [1:79883] "None" "None" "None" "None" ...
## $ 內政部感染鄉鎮代碼: chr [1:79883] "None" "None" "None" "None" ...
## - attr(*, "spec")=
## .. cols(
## .. 發病日 = col_date(format = "%Y/%m/%d"),
## .. 個案研判日 = col_character(),
## .. 通報日 = col_date(format = "%Y/%m/%d"),
## .. 性別 = col_character(),
## .. 年齡層 = col_character(),
## .. 居住縣市 = col_character(),
## .. 居住鄉鎮 = col_character(),
## .. 居住村里 = col_character(),
## .. 最小統計區 = col_character(),
## .. 最小統計區中心點X = col_character(),
## .. 最小統計區中心點Y = col_character(),
## .. 一級統計區 = col_character(),
## .. 二級統計區 = col_character(),
## .. 感染縣市 = col_character(),
## .. 感染鄉鎮 = col_character(),
## .. 感染村里 = col_character(),
## .. 是否境外移入 = col_character(),
## .. 感染國家 = col_character(),
## .. 確定病例數 = col_double(),
## .. 居住村里代碼 = col_character(),
## .. 感染村里代碼 = col_character(),
## .. 血清型 = col_character(),
## .. 內政部居住縣市代碼 = col_character(),
## .. 內政部居住鄉鎮代碼 = col_character(),
## .. 內政部感染縣市代碼 = col_character(),
## .. 內政部感染鄉鎮代碼 = col_character()
## .. )
Dengue_Daily <- Dengue_Daily[(Dengue_Daily$通報日>='2016-01-01') & (Dengue_Daily$通報日<'2017-01-01'),]
dim(Dengue_Daily)
## [1] 849 26
head(Dengue_Daily)
## # A tibble: 6 x 26
## 發病日 個案研判日 通報日 性別 年齡層 居住縣市 居住鄉鎮 居住村里
## <date> <chr> <date> <chr> <chr> <chr> <chr> <chr>
## 1 2015-12-21 2016/01/04 2016-01-04 女 20-24 高雄市 新興區 德望里
## 2 2015-12-24 2016/01/01 2016-01-01 男 45-49 高雄市 前鎮區 興中里
## 3 2015-12-24 2016/01/02 2016-01-01 女 25-29 高雄市 鼓山區 寶樹里
## 4 2015-12-24 2016/01/02 2016-01-01 男 50-54 高雄市 鳳山區 文衡里
## 5 2015-12-24 2016/01/06 2016-01-05 女 3 澎湖縣 湖西鄉 菓葉村
## 6 2015-12-25 2016/01/01 2016-01-01 女 40-44 高雄市 左營區 菜公里
## # … with 18 more variables: 最小統計區 <chr>, 最小統計區中心點X <chr>,
## # 最小統計區中心點Y <chr>, 一級統計區 <chr>, 二級統計區 <chr>,
## # 感染縣市 <chr>, 感染鄉鎮 <chr>, 感染村里 <chr>, 是否境外移入 <chr>,
## # 感染國家 <chr>, 確定病例數 <dbl>, 居住村里代碼 <chr>, 感染村里代碼 <chr>,
## # 血清型 <chr>, 內政部居住縣市代碼 <chr>, 內政部居住鄉鎮代碼 <chr>,
## # 內政部感染縣市代碼 <chr>, 內政部感染鄉鎮代碼 <chr>
使用Leaflet
#install.packages("leaflet")
library(leaflet)
# 資料預處理
Dengue_Daily$最小統計區中心點X <- as.double(Dengue_Daily$最小統計區中心點X)
## Warning: NAs introduced by coercion
Dengue_Daily$最小統計區中心點Y <- as.double(Dengue_Daily$最小統計區中心點Y)
## Warning: NAs introduced by coercion
head(Dengue_Daily)
## # A tibble: 6 x 26
## 發病日 個案研判日 通報日 性別 年齡層 居住縣市 居住鄉鎮 居住村里
## <date> <chr> <date> <chr> <chr> <chr> <chr> <chr>
## 1 2015-12-21 2016/01/04 2016-01-04 女 20-24 高雄市 新興區 德望里
## 2 2015-12-24 2016/01/01 2016-01-01 男 45-49 高雄市 前鎮區 興中里
## 3 2015-12-24 2016/01/02 2016-01-01 女 25-29 高雄市 鼓山區 寶樹里
## 4 2015-12-24 2016/01/02 2016-01-01 男 50-54 高雄市 鳳山區 文衡里
## 5 2015-12-24 2016/01/06 2016-01-05 女 3 澎湖縣 湖西鄉 菓葉村
## 6 2015-12-25 2016/01/01 2016-01-01 女 40-44 高雄市 左營區 菜公里
## # … with 18 more variables: 最小統計區 <chr>, 最小統計區中心點X <dbl>,
## # 最小統計區中心點Y <dbl>, 一級統計區 <chr>, 二級統計區 <chr>,
## # 感染縣市 <chr>, 感染鄉鎮 <chr>, 感染村里 <chr>, 是否境外移入 <chr>,
## # 感染國家 <chr>, 確定病例數 <dbl>, 居住村里代碼 <chr>, 感染村里代碼 <chr>,
## # 血清型 <chr>, 內政部居住縣市代碼 <chr>, 內政部居住鄉鎮代碼 <chr>,
## # 內政部感染縣市代碼 <chr>, 內政部感染鄉鎮代碼 <chr>
# 繪製 Marker
Dengue_Daily$html_text <- paste('年齡層:',Dengue_Daily$年齡層, '<br>','性別:',Dengue_Daily$性別, '<br>' ,'<a href="https://www.cdc.gov.tw/">請參考疾管署資訊</a>')
leaflet(data = Dengue_Daily) %>%
addTiles() %>%
addMarkers(~最小統計區中心點X, ~最小統計區中心點Y, popup = ~html_text, label = ~html_text)
## Warning in validateCoords(lng, lat, funcName): Data contains 48 rows with either
## missing or invalid lat/lon values and will be ignored
leaflet(data = Dengue_Daily) %>%
addTiles() %>%
addMarkers(~最小統計區中心點X, ~最小統計區中心點Y, popup = ~as.character(確定病例數), label = ~as.character(確定病例數)) %>%
addProviderTiles(providers$CartoDB.Positron)
## Warning in validateCoords(lng, lat, funcName): Data contains 48 rows with either
## missing or invalid lat/lon values and will be ignored
繪製分群結果
leaflet(data = Dengue_Daily) %>% addTiles() %>%
addMarkers(~最小統計區中心點X, ~最小統計區中心點Y, popup = ~as.character(確定病例數), label = ~as.character(確定病例數), clusterOptions = markerClusterOptions())
## Warning in validateCoords(lng, lat, funcName): Data contains 48 rows with either
## missing or invalid lat/lon values and will be ignored
?markerClusterOptions
library(leaflet)
cities <- read.csv(textConnection("
City,Lat,Long,Pop
Boston,42.3601,-71.0589,645966
Hartford,41.7627,-72.6743,125017
New York City,40.7127,-74.0059,8406000
Philadelphia,39.9500,-75.1667,1553000
Pittsburgh,40.4397,-79.9764,305841
Providence,41.8236,-71.4222,177994
"))
leaflet() %>%
addTiles() %>%
addPolylines(lat = cities$Lat, lng = cities$Long)
library(jsonlite)
covid19map <- fromJSON('https://od.cdc.gov.tw/eic/covid19/covid19map.json')
head(covid19map,1)
## $type
## [1] "FeatureCollection"
covid19map$features[1,]$properties
## name cases deaths
## 1 Bahamas 111 11
covid19map$features[1,]$geometry$coordinates
## [[1]]
## [[1]][[1]]
## , , 1
##
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## [1,] -77.53466 -77.78 -78.03405 -78.40848 -78.19087 -77.89 -77.54 -77.53466
##
## , , 2
##
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## [1,] 23.75975 23.71 24.28615 24.57564 25.2103 25.17 24.34 23.75975
##
##
## [[1]][[2]]
## , , 1
##
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] -77.82 -78.91 -78.98 -78.51 -77.85 -77.82
##
## , , 2
##
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 26.58 26.42 26.79 26.87 26.84 26.58
##
##
## [[1]][[3]]
## , , 1
##
## [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## [1,] -77 -77.17255 -77.35641 -77.34 -77.78802 -77.79 -77
##
## , , 2
##
## [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## [1,] 26.59 25.87918 26.00735 26.53 26.92516 27.04 26.59
#install.packages('rgdal')
covid19map <- rgdal::readOGR("https://od.cdc.gov.tw/eic/covid19/covid19map.json")
## OGR data source with driver: GeoJSON
## Source: "https://od.cdc.gov.tw/eic/covid19/covid19map.json", layer: "covid19map"
## with 178 features
## It has 3 fields
pal <- colorNumeric("viridis", NULL)
leaflet(covid19map) %>%
addTiles() %>%
addPolygons(stroke = FALSE, smoothFactor = 0.3, fillOpacity = 1,
fillColor = ~pal(cases),
label = ~paste0(name, ": ", formatC(cases, big.mark = ","))) %>%
addLegend(pal = pal, values = ~log10(cases), opacity = 1.0,
labFormat = labelFormat(transform = function(x) round(10^x)))
API 範例
library(httr)
res <- GET('https://clinicaltables.nlm.nih.gov/api/icd9cm_dx/v3/search?terms=08')
res$status_code
## [1] 200
library(jsonlite)
json <- httr::content(res, as = "text")
data <- fromJSON(json)
data
## [[1]]
## [1] 51
##
## [[2]]
## [1] "080" "0810" "0811" "0812" "0819" "0820" "0821"
##
## [[3]]
## NULL
##
## [[4]]
## [,1] [,2]
## [1,] "080" " Louse-borne (epidemic) typhus"
## [2,] "081.0" " Murine (endemic) typhus"
## [3,] "081.1" " Brill's disease"
## [4,] "081.2" " Scrub typhus"
## [5,] "081.9" " Typhus, unspecified"
## [6,] "082.0" " Spotted fevers"
## [7,] "082.1" " Boutonneuse fever"