摘要 任务目的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