頻數表在統計學中是一個非常基本並且重要的概念,我們這里就來講解它的基本用法。
首先我們需要載入數據,並查看數據的基本信息
- install.packages('vcd') #安裝vcd包,其中有可以利用的數據Arthritis
- library(vcd)
- 載入需要的程輯包:grid
- > head(Arthritis)#################################################
- ID Treatment Sex Age Improved
- 1 57 Treated Male 27 Some
- 2 46 Treated Male 29 None
- 3 77 Treated Male 30 None
- 4 17 Treated Male 32 Marked
- 5 36 Treated Male 46 Marked
- 6 23 Treated Male 58 Marked
- > class(Arthritis)################################################
- [1] "data.frame"
- > summary(Arthritis)##############################################
- ID Treatment Sex Age Improved
- Min. : 1.00 Placebo:43 Female:59 Min. :23.00 None :42
- 1st Qu.:21.75 Treated:41 Male :25 1st Qu.:46.00 Some :14
- Median :42.50 Median :57.00 Marked:28
- Mean :42.50 Mean :53.36
- 3rd Qu.:63.25 3rd Qu.:63.00
- Max. :84.00 Max. :74.00
從結果中看以看出,Arthritis是一個data.frame結構的數據。其中ID和Age是numeric型的數據,其他三個都是factor型的數據。
創建一維列聯表
- > a<-table(Arthritis$Improved)#創建一維列聯表
- > class(a) #查看變量a的類型
- [1] "table"
- > a
- None Some Marked
- 42 14 28
從結果中可以看出,就是如下的表格
None | Some | Marked |
42 | 14 | 28 |
創建二維列聯表
- > b<-table(Arthritis$Sex,Arthritis$Improved)
- > class(b)
- [1] "table"
- > b
- None Some Marked
- Female 25 12 22
- Male 17 2 6
結果是如下表格
None | Some | Marked | |
Female | 25 | 12 | 22 |
Male | 17 | 2 | 6 |
我們還可以將一維列聯表a和二維列聯表b轉化成百分比的形式
- > prop.table(a)
- None Some Marked
- 0.5000000 0.1666667 0.3333333
- > prop.table(b)
- None Some Marked
- Female 0.29761905 0.14285714 0.26190476
- Male 0.20238095 0.02380952 0.07142857
給table添加邊際和
- > addmargins(a)####################################
- None Some Marked Sum
- 42 14 28 84
- > addmargins(b)####################################
- None Some Marked Sum
- Female 25 12 22 59
- Male 17 2 6 25
- Sum 42 14 28 84
- > addmargins(prop.table(a))#########################
- None Some Marked Sum
- 0.5000000 0.1666667 0.3333333 1.0000000
- > addmargins(prop.table(b))#########################
- None Some Marked Sum
- Female 0.29761905 0.14285714 0.26190476 0.70238095
- Male 0.20238095 0.02380952 0.07142857 0.29761905
- Sum 0.50000000 0.16666667 0.33333333 1.00000000
只添加某個部分邊際和
- > addmargins(prop.table(b),1)
- None Some Marked
- Female 0.29761905 0.14285714 0.26190476
- Male 0.20238095 0.02380952 0.07142857
- Sum 0.50000000 0.16666667 0.33333333
- > addmargins(prop.table(b),2)
- None Some Marked Sum
- Female 0.29761905 0.14285714 0.26190476 0.70238095
- Male 0.20238095 0.02380952 0.07142857 0.29761905