摘要 任务目的1:对shyq_byD_0504.csv进行描述,并且对上海各区当日累计人数进行计算与可视化 Step1:首先描述数据,并且尝试对于每日新增进行可视化 Step2:计算每日累计人数 Step3:对于每日累计进行可视化 任务目的2:计算封控期R0
Step1:首先描述数据,并且尝试对于每日新增进行可视化 读取分区数据,存为D_data
D_data<-read.csv('/Users/sanhuai/Desktop/shyq_byD_0504.csv')
summary(D_data)
## Date 徐汇区 松江区 黄浦区
## Length:34 Min. : 330.0 Min. : 68.0 Min. : 260.0
## Class :character 1st Qu.: 611.2 1st Qu.: 296.5 1st Qu.: 991.5
## Mode :character Median :1252.0 Median : 563.0 Median :1425.5
## Mean :1186.3 Mean : 602.8 Mean :1622.0
## 3rd Qu.:1547.8 3rd Qu.: 761.8 3rd Qu.:1999.5
## Max. :3185.0 Max. :2568.0 Max. :3323.0
## 嘉定区 虹口区 杨浦区 普陀区
## Min. : 175.0 Min. : 61.0 Min. : 134.0 Min. : 62.0
## 1st Qu.: 282.2 1st Qu.: 455.2 1st Qu.: 432.5 1st Qu.: 256.5
## Median : 565.5 Median : 825.5 Median : 733.5 Median : 449.5
## Mean : 602.7 Mean : 808.0 Mean : 816.1 Mean : 544.0
## 3rd Qu.: 749.0 3rd Qu.:1091.8 3rd Qu.:1178.5 3rd Qu.: 628.5
## Max. :1505.0 Max. :1497.0 Max. :2005.0 Max. :1857.0
## 青浦区 静安区 金山区 奉贤区
## Min. : 43.0 Min. : 50.0 Min. : 3.00 Min. : 1.00
## 1st Qu.:231.2 1st Qu.: 442.5 1st Qu.: 19.50 1st Qu.: 12.25
## Median :308.0 Median : 640.5 Median : 30.50 Median : 33.50
## Mean :316.1 Mean : 796.2 Mean : 39.82 Mean : 56.79
## 3rd Qu.:384.8 3rd Qu.:1080.2 3rd Qu.: 55.75 3rd Qu.: 89.75
## Max. :877.0 Max. :2064.0 Max. :129.00 Max. :278.00
## 崇明区 长宁区 宝山区 闵行区
## Min. : 26.00 Min. : 33.0 Min. : 45.0 Min. : 252
## 1st Qu.: 60.75 1st Qu.: 187.8 1st Qu.: 570.5 1st Qu.: 725
## Median : 89.00 Median : 515.0 Median : 981.5 Median :1376
## Mean :132.26 Mean : 491.0 Mean :1135.0 Mean :1690
## 3rd Qu.:168.75 3rd Qu.: 726.8 3rd Qu.:1418.2 3rd Qu.:2524
## Max. :474.00 Max. :1133.0 Max. :2886.0 Max. :4624
## 浦东新区
## Min. : 883
## 1st Qu.: 2807
## Median : 6456
## Mean : 6108
## 3rd Qu.: 8404
## Max. :15026
整理数据,melt成为mD_data ((melt的D_data))
library(reshape2)
N<-dim(D_data)#返回该矩阵的行数和列数
mD_data<-melt(D_data,id='Date',variable=)#写不写这个variable都一样,不信你试试XD
mD_data$Date<-as.Date(mD_data$Date,'%m/%d/%y')
画图(各区每日新增图)
library(ggplot2)
p1<-ggplot(mD_data,aes(x=Date,y=value,color=variable))
p1+geom_point()+facet_wrap(~variable)+ theme(text = element_text(family = "SimSun"))+ theme(axis.text.x = element_text(angle = 45,hjust = 1,size=7))
#facet_wrap(~variable)的作用是分小画布
#重要知识点,要想让r画出来的图能够显示中文,需要根据电脑系统设置选择合适的出现字体
画图(各区每日新增柱状图)
p2<-ggplot(mD_data,aes(x=Date,y=value,fill=variable))
p2+geom_bar(stat='identity',position='stack')+labs(title='上海疫情')+ theme(text = element_text(family = "SimSun"))+ theme(axis.text.x = element_text(angle = 45,hjust = 1,size=7))
Step2:计算每日累计人数 计算(各区每日累计数据)
思路:使用原始数据D_data,复制一个cD_data,
cD_data中第x天的数据是D_data第1天到x-1天数据的总和 然后对cD_data进行melt
apply是个好函数,很好用
cD_data<-D_data
days<-dim(D_data)[1]
for (i in 1:days){
cD_data[i,-1]=apply(D_data[1:i,-1],2,sum)
}
cD_data
## Date 徐汇区 松江区 黄浦区 嘉定区 虹口区 杨浦区 普陀区 青浦区 静安区
## 1 4/1/22 639 493 260 200 61 134 245 87 189
## 2 4/2/22 1681 1060 919 817 403 408 633 318 513
## 3 4/3/22 2180 1323 1743 1232 591 782 954 550 851
## 4 4/4/22 3409 1882 2713 1469 1199 1002 1208 864 901
## 5 4/5/22 4329 2678 3371 1950 1609 1625 1691 1248 1203
## 6 4/6/22 5436 3459 4415 3358 2277 2255 2724 1718 1748
## 7 4/7/22 7512 4210 5795 4291 2871 2856 3681 2211 2129
## 8 4/8/22 9141 4981 8402 5796 3249 3557 4775 2553 2794
## 9 4/9/22 10291 5481 8950 6165 3598 4637 5428 3110 3396
## 10 4/10/22 13476 7306 10711 7570 4836 6514 6429 3987 3999
## 11 4/11/22 15216 7992 12914 7769 6204 7916 8286 4314 4540
## 12 4/12/22 16323 8703 14717 8744 7135 9075 9455 4837 5594
## 13 4/13/22 17814 9355 16114 9457 8622 10260 9928 5115 5814
## 14 4/14/22 19156 10116 18127 10260 9552 11077 10192 5419 6080
## 15 4/15/22 20845 10889 19511 11001 11049 12488 10618 5955 6513
## 16 4/16/22 22377 11299 21076 11686 12076 13348 11949 6260 7647
## 17 4/17/22 23930 12204 22972 12664 13242 14235 13174 6629 8489
## 18 4/18/22 24502 12966 26295 13252 14334 14716 13545 6886 9499
## 19 4/19/22 26110 13291 29379 13995 15087 15482 14073 7275 11232
## 20 4/20/22 27557 13967 32476 14644 15919 17487 14628 7555 12362
## 21 4/21/22 28923 14460 34228 15420 16804 18030 15117 7940 14426
## 22 4/22/22 30198 17028 37071 15920 17801 19386 15640 8299 15212
## 23 4/23/22 31920 17801 39030 16671 18620 20663 16118 8723 15683
## 24 4/24/22 33316 18349 40785 17272 19275 21898 16595 8974 17385
## 25 4/25/22 34657 18990 43456 17815 20545 23142 17013 9353 18401
## 26 4/26/22 35561 19277 44684 18249 21681 24248 17378 9664 19795
## 27 4/27/22 36113 19508 46136 18541 22772 24774 17679 9872 20884
## 28 4/28/22 37693 19910 48792 19029 24146 25582 17914 10141 22248
## 29 4/29/22 38295 20044 50191 19297 25161 25738 18055 10297 23647
## 30 4/30/22 38783 20149 51347 19556 25752 26080 18169 10425 24643
## 31 5/1/22 39225 20245 52459 19824 26421 26547 18264 10540 25345
## 32 5/2/22 39642 20313 53433 20103 26787 26935 18343 10634 25961
## 33 5/3/22 40005 20403 54372 20278 27145 27356 18405 10677 26526
## 34 5/4/22 40335 20495 55147 20493 27471 27749 18496 10747 27071
## 金山区 奉贤区 崇明区 长宁区 宝山区 闵行区 浦东新区
## 1 49 161 84 37 45 1043 2584
## 2 109 318 197 137 530 1872 4622
## 3 212 437 362 241 997 2812 8276
## 4 264 501 409 274 1262 4193 15347
## 5 341 645 488 358 1816 7130 23492
## 6 420 923 551 708 2476 9539 31949
## 7 549 1015 813 1560 2890 11796 40999
## 8 639 1112 983 2174 5711 14650 48285
## 9 707 1236 1154 2931 7972 19274 59415
## 10 764 1274 1209 3336 9811 22463 66147
## 11 799 1338 1263 3718 10791 25446 74390
## 12 838 1371 1349 4851 11086 29688 85437
## 13 872 1454 1412 5808 11736 32584 100463
## 14 900 1489 1472 6806 12153 34962 112119
## 15 931 1595 1564 7558 13476 36999 122401
## 16 952 1646 1613 8264 14769 40059 133192
## 17 976 1666 1665 9003 16219 42461 140932
## 18 983 1680 1691 9683 17249 43833 149763
## 19 992 1740 1771 10301 18206 45435 155409
## 20 1009 1772 1836 11027 19039 47121 159874
## 21 1039 1806 1956 11523 20017 49684 164529
## 22 1065 1814 2073 12236 22050 50989 172490
## 23 1109 1830 2281 12963 24936 51866 180116
## 24 1177 1837 2376 13712 27442 53095 186297
## 25 1199 1849 2850 14246 29228 53812 190209
## 26 1227 1862 3317 14665 31204 54561 192954
## 27 1268 1865 3516 14873 32319 54882 195947
## 28 1296 1871 3554 15520 33562 55304 199419
## 29 1315 1897 3823 15897 34759 55820 201447
## 30 1326 1901 4131 16078 35892 56251 203072
## 31 1340 1914 4207 16321 36875 56637 204724
## 32 1347 1924 4342 16472 37511 56924 205886
## 33 1351 1930 4441 16574 38131 57176 206769
## 34 1354 1931 4497 16695 38590 57461 207658
library(reshape2)
cN<-dim(cD_data)
mcD_data<-melt(cD_data,id='Date',variable=)
mcD_data$Date<-as.Date(mcD_data$Date,'%m/%d/%y')
Step3:对于每日累计进行可视化 画图(各区每日累计图) bug:图横坐标日期是乱的,估计因为它是str类型,as.Date就好了
library(ggplot2)
p3<-ggplot(mcD_data,aes(x=Date,y=value,color=variable))
p3+geom_point()+facet_wrap(~variable)+ theme(text = element_text(family = "SimSun"))+ theme(axis.text.x = element_text(angle = 45,hjust = 1,size=3))
画图(各区每日累计柱状图)
library(ggplot2)
p4<-ggplot(mcD_data,aes(x=Date,y=value,fill=variable))
p4+geom_bar(stat='identity',position='stack')+labs(title='上海疫情')+ theme(text = element_text(family = "SimSun"))+ theme(axis.text.x = element_text(angle = 45,hjust = 1,size=7))
R0的计算公式R0=(1+rTL)(1+rTI) r=ln(Yt)/t Yt当日感染人数
t当日距离疫情开始的天数 TL潜伏期 TI治愈天数
结果:Yt_data的最后一列是每日R0
##为了计算Yt,算出各区每日新增感染人数
Yt_data<-D_data
Yt_data$Date<-as.Date(Yt_data$Date,'%m/%d/%y')
for (i in 3:16){
Yt_data[,2]<-Yt_data[,2]+D_data[,i]
}
Yt_data<-Yt_data[,1:2]
Yt_data[,3]<-1:34
#设潜伏期为7天,治愈天数为14天
TL<-7
TI<-14
for (i in 1:length(Yt_data$Date)){
Yt_data[i,4]<-(1+log(exp(1),Yt_data[i,2])/Yt_data[i,3]*TL)*(1+log(exp(1),Yt_data[i,2])*TI)
}
colnames(Yt_data)<-c('Date','Yt当日感染人数','t当日距离疫情开始的天数','R0')
Yt_data
## Date Yt当日感染人数 t当日距离疫情开始的天数 R0
## 1 2022-04-01 3727 1 5.002899
## 2 2022-04-02 6188 2 3.647379
## 3 2022-04-03 5352 3 3.345695
## 4 2022-04-04 6283 4 3.121227
## 5 2022-04-05 8932 5 2.929614
## 6 2022-04-06 11525 6 2.808450
## 7 2022-04-07 12172 7 2.752786
## 8 2022-04-08 16338 8 2.663469
## 9 2022-04-09 13813 9 2.669921
## 10 2022-04-10 19355 10 2.589839
## 11 2022-04-11 14821 11 2.620611
## 12 2022-04-12 15260 12 2.601903
## 13 2022-04-13 12579 13 2.624724
## 14 2022-04-14 11416 14 2.632197
## 15 2022-04-15 13231 15 2.596900
## 16 2022-04-16 14029 16 2.579131
## 17 2022-04-17 14508 17 2.566754
## 18 2022-04-18 11585 18 2.599869
## 19 2022-04-19 13255 19 2.570965
## 20 2022-04-20 14030 20 2.556521
## 21 2022-04-21 12974 21 2.565468
## 22 2022-04-22 15409 22 2.532779
## 23 2022-04-23 13432 23 2.552024
## 24 2022-04-24 13274 24 2.550712
## 25 2022-04-25 13068 25 2.550297
## 26 2022-04-26 10817 26 2.579848
## 27 2022-04-27 7629 27 2.640463
## 28 2022-04-28 11560 28 2.563190
## 29 2022-04-29 7674 29 2.634228
## 30 2022-04-30 6247 30 2.671320
## 31 2022-05-01 5681 31 2.687876
## 32 2022-05-02 4507 32 2.733280
## 33 2022-05-03 4099 33 2.751412
## 34 2022-05-04 3762 34 2.768069