資料名稱:民國 68-104 年縣市別性別癌症別發生率資料

資料來源:政府資料開放平台 data.gov.tw

資料格式:.csv

資料欄位:85321 筆具有 9 個變數的資料集


注意:

1.實際操作時,讀取檔案的路徑可能要重新調整:

2.目前使用 R 3.6.0 版,套件皆無須 install

cancer <- read.csv("C:\\Users\\User\\Downloads\\癌症發生統計.csv",header=T)

看看資料集的摘要統計

summary(cancer)    
##    癌症診斷年         性別            縣市別                   癌症別     
##  Min.   :1979   女      :26517   台閩地區: 4649   全癌症          : 2546  
##  1st Qu.:1989   不分男女:32282   台北市  : 4533   肝及肝內膽管    : 2495  
##  Median :1998   男      :26522   新北市  : 4528   肺、支氣管及氣管: 2488  
##  Mean   :1998                    高雄市  : 4428   胃              : 2485  
##  3rd Qu.:2007                    台中市  : 4413   結直腸          : 2457  
##  Max.   :2015                    台南市  : 4336   鼻咽            : 2423  
##                                  (Other) :58434   (Other)         :70427  
##  年齡標準化發生率..WHO.2000世界標準人口..每10萬人口.   癌症發生數      
##  Min.   :  0.00                                      Min.   :     1.0  
##  1st Qu.:  0.70                                      1st Qu.:     3.0  
##  Median :  2.30                                      Median :    11.0  
##  Mean   : 11.90                                      Mean   :   178.5  
##  3rd Qu.:  7.15                                      3rd Qu.:    49.0  
##  Max.   :408.26                                      Max.   :105156.0  
##                                                                        
##     平均年齡        年齡中位數     粗率..每10萬人口.
##  Min.   :  0.00   Min.   :  0.00   Min.   :  0.00   
##  1st Qu.: 49.10   1st Qu.: 50.00   1st Qu.:  0.70   
##  Median : 58.00   Median : 59.00   Median :  2.32   
##  Mean   : 55.45   Mean   : 56.14   Mean   : 13.50   
##  3rd Qu.: 65.00   3rd Qu.: 66.50   3rd Qu.:  7.91   
##  Max.   :105.00   Max.   :105.00   Max.   :648.56   
## 

看看資料集的前六筆資料

head(cancer)       
##   癌症診斷年     性別   縣市別           癌症別
## 1       1979 不分男女 台閩地區 口腔、口咽及下咽
## 2       1979 不分男女   台北市 口腔、口咽及下咽
## 3       1979 不分男女   台中市 口腔、口咽及下咽
## 4       1979 不分男女   台南市 口腔、口咽及下咽
## 5       1979 不分男女   高雄市 口腔、口咽及下咽
## 6       1979 不分男女   基隆市 口腔、口咽及下咽
##   年齡標準化發生率..WHO.2000世界標準人口..每10萬人口. 癌症發生數 平均年齡
## 1                                                3.40        439    53.37
## 2                                                3.85         65    52.00
## 3                                                4.16         45    54.18
## 4                                                1.58         19    55.79
## 5                                                2.10         32    48.56
## 6                                                3.93         10    56.70
##   年齡中位數 粗率..每10萬人口.
## 1       55.0              2.50
## 2       55.0              2.96
## 3       55.0              2.88
## 4       57.0              1.24
## 5       50.0              1.49
## 6       59.5              2.90

看看資料集的維度

dim(cancer)
## [1] 85321     9

將變數名稱中太過冗長的部分做修改

names(cancer) <- c("癌症診斷年","性別","縣市別","癌症別","WHO2000_p100k","癌症發生數","平均年齡","年齡中位數","p100k")

再看看資料集的前六筆資料,檢查名稱是否已調整

head(cancer)
##   癌症診斷年     性別   縣市別           癌症別 WHO2000_p100k 癌症發生數
## 1       1979 不分男女 台閩地區 口腔、口咽及下咽          3.40        439
## 2       1979 不分男女   台北市 口腔、口咽及下咽          3.85         65
## 3       1979 不分男女   台中市 口腔、口咽及下咽          4.16         45
## 4       1979 不分男女   台南市 口腔、口咽及下咽          1.58         19
## 5       1979 不分男女   高雄市 口腔、口咽及下咽          2.10         32
## 6       1979 不分男女   基隆市 口腔、口咽及下咽          3.93         10
##   平均年齡 年齡中位數 p100k
## 1    53.37       55.0  2.50
## 2    52.00       55.0  2.96
## 3    54.18       55.0  2.88
## 4    55.79       57.0  1.24
## 5    48.56       50.0  1.49
## 6    56.70       59.5  2.90

透過 attach 指令將變數與cancer資料及產生關連

attach(cancer)

由前面 summary 指令的輸出結果中,可看出 性別 變項包含 不分男女 等水準,縣市別 變項除了各行政區還包含 台閩地區癌症別 當中還以一個定義不明的 全癌症 的水準,顯見資料有重複呈現的情況,宜先做適度分割處理,因此以下先依據 性別 變項將資料分割為

  1. cancer_mf (不分男女)
  2. cancer_m (男)
  3. cancer_f (女)

等三個區塊

cancer_mf <- cancer[性別=="不分男女",]
cancer_m <- cancer[性別=="男",]
cancer_f <- cancer[性別=="女",]

再將 cancer_mf 細分為 cancer_mf_c1(台閩地區) 與 cancer_mf_c2(各行政區),並觀察其維度

cancer_mf_c1 <- cancer[性別=="不分男女" & 縣市別 == "台閩地區",]
cancer_mf_c2 <- cancer[性別=="不分男女" & 縣市別 != "台閩地區",]
dim(cancer_mf)
## [1] 32282     9
dim(cancer_mf_c1)
## [1] 1676    9
dim(cancer_mf_c2)
## [1] 30606     9

cancer_m 細分為 cancer_m_c1(台閩地區) 與 cancer_m_c2(各行政區),並觀察其維度

cancer_m_c1 <- cancer[性別=="男" & 縣市別 == "台閩地區",]
cancer_m_c2 <- cancer[性別=="男" & 縣市別 != "台閩地區",]
dim(cancer_m)
## [1] 26522     9
dim(cancer_m_c1)
## [1] 1450    9
dim(cancer_m_c2)
## [1] 25072     9

cancer_f 細分為 cancer_f_c1(台閩地區) 與 cancer_f_c2(各行政區),並觀察其維度

cancer_f_c1 <- cancer[性別=="女" & 縣市別 == "台閩地區",]
cancer_f_c2 <- cancer[性別=="女" & 縣市別 != "台閩地區",]
dim(cancer_f)
## [1] 26517     9
dim(cancer_f_c1)
## [1] 1523    9
dim(cancer_f_c2)
## [1] 24994     9

接下來載入plyr 套件,以利後續 aggregate 指令的運用 (以下僅針對cancer_mf_c1_01分析,即 台閩地區不分男女 )

library(plyr)

將變項 癌症發生數 透過不同的 癌症別,考慮 台閩地區不分男女 的情況下 分別計算總和(68-104年的整體平均),並列印顯示

cancer_mf_c1_01 <- aggregate(癌症發生數~癌症別,cancer_mf_c1 ,each(sum))
cancer_mf_c1_01
##                                  癌症別 癌症發生數
## 1                      口腔、口咽及下咽     118906
## 2                              女性乳房     172672
## 3                                  子宮        739
## 4                                子宮頸      78978
## 5                                子宮體      27605
## 6                                  小腸       7191
## 7                          不明原發部位      25703
## 8                              主唾液腺       5444
## 9                                甲狀腺      46577
## 10                               白血病      40444
## 11                                 皮膚      58232
## 12                               全癌症    1915930
## 13                       何杰金氏淋巴瘤       3503
## 14                 卵巢、輸卵管及寬韌帶      25177
## 15                             男性乳房        947
## 16                         肝及肝內膽管     247171
## 17                     其他女性生殖器官       4114
## 18                         其他內分泌腺       1899
## 19                   其他分界不明的部位       1685
## 20                     其他男性生殖器官       2639
## 21                         其他神經系統       1958
## 22 呼吸系統與胸內器官之其他分界不明部位         13
## 23                     肺、支氣管及氣管     228504
## 24                     非何杰金氏淋巴瘤      36513
## 25                       後腹膜腔及腹膜       4083
## 26                                   胃     109790
## 27                                 食道      43438
## 28             消化器官其他分界不明部位       1027
## 29                                   胰      33706
## 30                     胸腺、心臟與中隔       6082
## 31                                 胸膜       1057
## 32                   骨、關節及關節軟骨       5238
## 33                             眼及淚腺       1781
## 34                                   喉      15674
## 35                               結直腸     258046
## 36       結締組織、皮下組織及其他軟組織      11302
## 37                                   腎      20650
## 38                   腎盂及其他泌尿系統      27295
## 39                                 睪丸       3785
## 40                                   腦      18562
## 41                                 膀胱      50087
## 42                                 鼻咽      49299
## 43                   鼻腔、中耳及副鼻竇       5335
## 44                             漿細胞瘤       9439
## 45                       膽囊及肝外膽管      19031
## 46                               攝護腺      71384

將變項 癌症發生數 透過不同的 癌症別,考慮 各行政區不分男女 的情況下 分別計算總和(68-104年的整體總和),並列印顯示

cancer_mf_c1_02 <- aggregate(癌症發生數~癌症別,cancer_mf_c2 ,each(sum))
cancer_mf_c1_02
##                                  癌症別 癌症發生數
## 1                      口腔、口咽及下咽     118555
## 2                              女性乳房     171875
## 3                                  子宮        719
## 4                                子宮頸      77030
## 5                                子宮體      27479
## 6                                  小腸       7152
## 7                          不明原發部位      25556
## 8                              主唾液腺       5395
## 9                                甲狀腺      46388
## 10                               白血病      40256
## 11                                 皮膚      57754
## 12                               全癌症    1904362
## 13                       何杰金氏淋巴瘤       3473
## 14                 卵巢、輸卵管及寬韌帶      25029
## 15                             男性乳房        934
## 16                         肝及肝內膽管     246318
## 17                     其他女性生殖器官       4026
## 18                         其他內分泌腺       1894
## 19                   其他分界不明的部位       1639
## 20                     其他男性生殖器官       2605
## 21                         其他神經系統       1950
## 22 呼吸系統與胸內器官之其他分界不明部位         12
## 23                     肺、支氣管及氣管     227259
## 24                     非何杰金氏淋巴瘤      36460
## 25                       後腹膜腔及腹膜       4066
## 26                                   胃     108829
## 27                                 食道      43141
## 28             消化器官其他分界不明部位        998
## 29                                   胰      33587
## 30                     胸腺、心臟與中隔       6068
## 31                                 胸膜       1052
## 32                   骨、關節及關節軟骨       5181
## 33                             眼及淚腺       1754
## 34                                   喉      15554
## 35                               結直腸     256889
## 36       結締組織、皮下組織及其他軟組織      11219
## 37                                   腎      20578
## 38                   腎盂及其他泌尿系統      27198
## 39                                 睪丸       3761
## 40                                   腦      18471
## 41                                 膀胱      49757
## 42                                 鼻咽      48671
## 43                   鼻腔、中耳及副鼻竇       5269
## 44                             漿細胞瘤       9400
## 45                       膽囊及肝外膽管      18954
## 46                               攝護腺      71237

比較上述資料,兩者之各項的總和間存在些微差異,估計差異部分為連江縣(馬祖)或金門縣未分開呈現的部分數據

台閩地區 總和資料繪製圓餅圖及長條圖

pie(cancer_mf_c1_01[,2],cancer_mf_c1_01[,1])

barplot(cancer_mf_c1_01[,2], names.arg = cancer_mf_c1_01[,1])

癌症別太多,因此圖形呈現效果不佳。不過由圓餅圖可以約略看出 全癌症 總和約略等於其他各項癌症的總和。因原始資料中未明確定義,稍後分項比較時將予以剔除。接下來載入ggplot2 套件,繪製長條圖

library(ggplot2)
## Registered S3 methods overwritten by 'ggplot2':
##   method         from 
##   [.quosures     rlang
##   c.quosures     rlang
##   print.quosures rlang
ggplot(cancer_mf_c1_01,aes(x=cancer_mf_c1_01$癌症別,y=cancer_mf_c1_01$癌症發生數))+geom_bar(stat="identity")

同樣因癌症別太多,因此圖形呈現效果不佳。由 dim 指令得知有46個levels

dim(cancer_mf_c1_01)
## [1] 46  2

調整呈現方式,繪製 Cleveland 點圖

ggplot(cancer_mf_c1_01,aes(x=cancer_mf_c1_01$癌症別,y=cancer_mf_c1_01$癌症發生數))+geom_point(size=3)+theme_bw()+
  theme(axis.text.x = element_text(angle=60,hjust=1),
        panel.grid.major.y = element_blank(),
        panel.grid.minor.y = element_blank(),
        panel.grid.major.x = element_line(colour="grey60",linetype = "dashed"))

如前所述, 全癌症 總和約略等於其他各項癌症的總和。因原始資料中未明確定義,故予以剔除

cancer_mf_c1_01a <- cancer_mf_c1_01[-12,]

下圖為予以剔除後的結果

ggplot(cancer_mf_c1_01a,aes(x=cancer_mf_c1_01a$癌症別,y=cancer_mf_c1_01a$癌症發生數))+geom_point(size=3)+theme_bw()+
  theme(axis.text.x = element_text(angle=60,hjust=1),
        panel.grid.major.y = element_blank(),
        panel.grid.minor.y = element_blank(),
        panel.grid.major.x = element_line(colour="grey60",linetype = "dashed"))

考慮 癌症診斷年癌症別,分別計算各項癌症發生數的總和

cancer_mf_c1_02 <- aggregate(癌症發生數~癌症診斷年+癌症別,cancer_mf_c1 ,each(sum))

取出2015年資料,並剔除 全癌症 類別

cancer_2015 <- cancer_mf_c1_02[cancer_mf_c1_02$癌症診斷年==2015,]
cancer_2015 <- cancer_2015[-12,]

繪製 Cleveland 點圖

ggplot(cancer_2015,aes(x=cancer_2015$癌症別,y=cancer_2015$癌症發生數))+geom_point(size=3)+
  theme_bw()+
  theme(axis.text.x = element_text(angle=60,hjust=1),
        panel.grid.major.y = element_blank(),
        panel.grid.minor.y = element_blank(),
        panel.grid.major.x = element_line(colour="grey60",linetype = "dashed"))

繪製 Cleveland 點圖 (依據癌症發生數排序)

ggplot(cancer_2015,aes(x=reorder(cancer_2015$癌症別,cancer_2015$癌症發生數),y=cancer_2015$癌症發生數))+geom_point(size=3)+
  theme_bw()+
  theme(axis.text.x = element_text(angle=60,hjust=1),
        panel.grid.major.y = element_blank(),
        panel.grid.minor.y = element_blank(),
        panel.grid.major.x = element_line(colour="grey60",linetype = "dashed"))

以直式呈現 Cleveland 點圖 (依據癌症發生數排序)

ggplot(cancer_2015,aes(y=reorder(cancer_2015$癌症別,cancer_2015$癌症發生數),x=cancer_2015$癌症發生數))+geom_point(size=3)+
  theme_bw()+
  theme(axis.text.x = element_text(angle=20,hjust=1),
        panel.grid.major.y = element_blank(),
        panel.grid.minor.y = element_blank(),
        panel.grid.major.x = element_line(colour="grey60",linetype = "dashed"))