-
Notifications
You must be signed in to change notification settings - Fork 23
/
2019nCoV.R
129 lines (91 loc) · 4.01 KB
/
2019nCoV.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
122
123
124
125
126
127
128
129
# title: 2019新型冠狀病毒視覺化
# date: 2020.2.13
# updated: 2020.3.17
# author: Ming-Chang Lee
# email: alan9956@gmail.com
# RWEPA: http://rwepa.blogspot.tw/
# GitHub: https://github.com/rwepa
# updated note:
# 1. 修改 read.table 為 read.csv
# data: https://github.com/CSSEGISandData/2019-nCoV
library(leaflet)
library(htmltools) # tag
# 確診 Confirmed
ncovConfirmedUrl <- "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv"
# 匯入資料
ncovConfirmed <- read.csv(ncovConfirmedUrl)
# 將 X 取代為空白
names(ncovConfirmed) <- gsub("X", "", names(ncovConfirmed))
# 使用strsplit, 依據 "." 進行字串分割
# unlist 將分割的 list 轉換為向量
# matrix 的 byrow=TRUE 可以將資料依玥順序排列
# as.data.frame 轉換為 data.frame 方便後序操作
# 月 日 年
mydf <- as.data.frame(matrix(unlist(strsplit(names(ncovConfirmed)[-c(1:4)], "\\.")), ncol=3, byrow=TRUE))
# 儲存轉換後的欄位名稱向量
myname <- c()
# 將欄位名稱 "1.22.20" 轉換為 "2020-1-21", 即 "年-月-日" 格式
# for (i in 1:...) { }, nrow(mydf) 表示列個數
for (i in 1:nrow(mydf)) {
myname <- c(myname, paste0(paste0("20", mydf[i, 3]), "-", mydf[i, 1], "-", mydf[i, 2]))
}
# 刪除 mydf 物件
rm(mydf)
names(ncovConfirmed)[-c(1:4)] <- myname
head(ncovConfirmed)
# 使用 aggregate 計算各國家 2020-3-16 的合計, 須使用 ‵ ‵ 字元
ncovConfirmedAgg <- aggregate(`2020-3-16` ~ Country.Region,
data=ncovConfirmed,
sum)
# 使用 aggregate 計算各國家最近日期的合計
# names(ncovConfirmed)[ncol(ncovConfirmed)] 取出最後一個欄位名稱,其結果為字串
# get(names(ncovConfirmed)[ncol(ncovConfirmed)]) 將欄位名稱轉換為物件名稱
ncovConfirmedAgg <- aggregate(get(names(ncovConfirmed)[ncol(ncovConfirmed)]) ~ Country.Region,
data=ncovConfirmed,
sum)
names(ncovConfirmedAgg) <- c("CountryRegion", "Confirmed")
ncovConfirmedAgg <- ncovConfirmedAgg[order(ncovConfirmedAgg$Confirmed, decreasing=TRUE),]
(ncovTotalConfirmed <- sum(ncovConfirmedAgg$Confirmed))
# 死亡 Death
ncovDeath <- "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv"
ncovDeath <- read.csv(ncovDeath)
names(ncovDeath) <- gsub("X", "", names(ncovDeath))
mydf <- as.data.frame(matrix(unlist(strsplit(names(ncovDeath)[-c(1:4)], "\\.")), ncol=3, byrow=TRUE))
myname <- c()
for (i in 1:nrow(mydf)) {
myname <- c(myname, paste0(paste0("20", mydf[i, 3]), "-", mydf[i, 1], "-", mydf[i, 2]))
}
rm(mydf)
names(ncovDeath)[-c(1:4)] <- myname
head(ncovDeath)
ncovDeathAgg <- aggregate(`2020-3-16` ~ Country.Region, data=ncovDeath, sum)
ncovDeathAgg <- aggregate(get(names(ncovDeath)[ncol(ncovDeath)]) ~ Country.Region,
data=ncovDeath,
sum)
names(ncovDeathAgg) <- c("CountryRegion", "Death")
ncovDeathAgg <- ncovDeathAgg[order(ncovDeathAgg$Death, decreasing=TRUE),]
(ncovTotalDeath <- sum(ncovDeathAgg$Death))
# 建立leaflet互動式地圖
title <- tags$h2(paste0("2020新型冠狀病毒感染人數全球分佈圖, ", date()))
datasource <- tags$div(
HTML("Data: https://github.com/CSSEGISandData/2019-nCoV")
)
publish <- tags$div(
HTML("Powerby:@RWEPA, Feb. 13, 2020.")
)
m <- leaflet() %>%
addTiles() %>% # Add default OpenStreetMap map tiles
addMarkers(
lng=ncovConfirmed$Long,
lat=ncovConfirmed$Lat,
popup=paste0(ncovConfirmed$Province.State,
", ",
ncovConfirmed$Country.Region,
" ",
names(ncovConfirmed)[ncol(ncovConfirmed)],
" 確診: ", ncovConfirmed[,ncol(ncovConfirmed)])) %>%
addControl(title, position="topright") %>%
addControl(datasource, position="bottomleft") %>%
addControl(publish, position="bottomright")
m # Print the map
# end