讀取登革熱資料

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"