一維度、二維度-頻數表和列聯表

  • 生成頻數表

建立頻數表和列聯表 的若干種方法函數

函數     描述
table(var1,var2,...,varN) 使用N個類別型變量(因子)建立一個N維列聯表
xtabs(formula,data)     根據一個公式和一個矩陣或數據框建立一個N維列聯表
prop.table(table,margins)·· 依margins定義的邊際列表計算將表中條目表示爲分數形式
簡單理解:每一個觀測值與行之和的比
若是margins沒寫,則表明每一個觀測值(確切說應該是單元格)站沒有總數的比例
margin.table(table,margins)     依margins定義的邊際列表計算表中條目的和 
簡單理解:就是行之和
addmargins(table,margins)     將概述邊margins(默認是求和結果)放入表中    
ftable(table)     建立一個緊湊的「平鋪」式列聯表

 

  • 一維列聯表

table()生成簡單的頻數統計表spa

library(vcd)
head(Arthritis)
> table(Arthritis$Improved)
  None   Some Marked 
    42     14     28 
> mytable <- with(Arthritis,    #應該與table(Arthritis$Improved)等價的呀?
+                 table(Improved))
> mytable
Improved
  None   Some Marked 
    42     14     28 
> prop.table(mytable)  #將這些頻數轉化爲比例值
Improved
     None      Some    Marked 
0.50000········00 0.1666667 0.3333333 
> prop.table(mytable)*100 #轉化爲百分比
Improved
    None     Some   Marked 
50.00000 16.66667 33.33333

 

  • 二維列聯表
  • table()

二維表也能夠使用table() ,格式爲code

mytable <- table(A,B)

A是行變量,B是列變量orm

  • xtabs()
mytable <- xtabs(~A+B,data= mydata)

mydata是一個矩陣或數據框,總的來講,要進行交叉分類的變量應出如今公式的右側(即~符號的右方),以 + 做爲分隔符。若某個變量寫在公式的左側,其爲一個頻數向量(在數據已經被表格化時頗有用)ci

> mytable <- xtabs(~ Treatment+Improved, data=Arthritis)
> mytable # frequencies
         Improved
Treatment None Some Marked
  Placebo   29    7      7
  Treated   13    7     21

 

使用margin.table()求行和,使用prop.table()求每一個觀測值佔行和的比例it

> margin.table(mytable,1) # 1指代table(A,B)語句的第一個變量A
Treatment
Placebo Treated 
     43      41 
> prop.table(mytable,1) 
         Improved
Treatment      None      Some    Marked
  Placebo 0.6744186 0.1627907 0.1627907
  Treated 0.3170732 0.1707317 0.5121951

使用margin.table()求列和,使用prop.table()求每一個觀測值佔列和的比例io

> prop.table(mytable, 1) #2指代table(A,B)語句的第二個變量B
         Improved
Treatment      None      Some    Marked
  Placebo 0.6744186 0.1627907 0.1627907
  Treated 0.3170732 0.1707317 0.5121951
> prop.table(mytable, 2)
         Improved
Treatment      None      Some    Marked
  Placebo 0.6904762 0.5000000 0.2500000
  Treated 0.3095238 0.5000000 0.7500000

各單元格所佔比例table

> prop.table(mytable) # 各單元格佔總數的比例
         Improved
Treatment       None       Some     Marked
  Placebo 0.34523810 0.08333333 0.08333333
  Treated 0.15476190 0.08333333 0.25000000

addmargins()添加表的邊際和form

> addmargins(mytable) # 添加行與列的和
         Improved
Treatment None Some Marked Sum
  Placebo   29    7      7  43
  Treated   13    7     21  41
  Sum       42   14     28  84

計算比例變量

> addmargins(prop.table(mytable))   #計算每一個單元格佔比的行列和
         Improved
Treatment       None       Some     Marked        Sum
  Placebo 0.34523810 0.08333333 0.08333333 0.51190476
  Treated 0.15476190 0.08333333 0.25000000 0.48809524
  Sum     0.50000000 0.16666667 0.33333333 1.00000000
> addmargins(prop.table(mytable, 1), 2)    #僅添加行的和
         Improved
Treatment      None      Some    Marked       Sum
  Placebo 0.6744186 0.1627907 0.1627907 1.0000000
  Treated 0.3170732 0.1707317 0.5121951 1.0000000
> addmargins(prop.table(mytable, 2), 1)   #僅添加列的he
         Improved
Treatment      None      Some    Marked
  Placebo 0.6904762 0.5000000 0.2500000
  Treated 0.3095238 0.5000000 0.7500000
  Sum     1.0000000 1.0000000 1.0000000

注:

table()函數默認忽略缺失值(NA),要在頻數統計中將NA視爲一個有效的類別,請設定參數 useNA=「ifany」ifany

 

  • 使用CrossTable生成二維列聯表

Cross Table()函數能夠不少的事情,計算(行、列、單元格)的百分比,指定小數位數,進行卡方, Fisher(費希爾)和McNemar獨立性檢驗 (兩種檢驗都屬於列聯表數據的獨立性檢驗);計算指望和(皮爾遜,標準化,調整的標準化)殘差,將缺失值做爲一種有效值,進行行和列標題的標註;生成SAS或SPSS風格的輸出

更多參考 help(CrossTable)

> library(gmodels)
Warning message:
程輯包‘gmodels’是用R版本3.4.1 來建造的 
> CrossTable(Arthritis$Treatment,Arthritis$Improved)

 
   Cell Contents
|-------------------------|
|                       N |
| Chi-square contribution |
|           N / Row Total |
|           N / Col Total |
|         N / Table Total |
|-------------------------|

 
Total Observations in Table:  84 

 
                    | Arthritis$Improved 
Arthritis$Treatment |      None |      Some |    Marked | Row Total | 
--------------------|-----------|-----------|-----------|-----------|
            Placebo |        29 |         7 |         7 |        43 | 
                    |     2.616 |     0.004 |     3.752 |           | 
                    |     0.674 |     0.163 |     0.163 |     0.512 | 
                    |     0.690 |     0.500 |     0.250 |           | 
                    |     0.345 |     0.083 |     0.083 |           | 
--------------------|-----------|-----------|-----------|-----------|
            Treated |        13 |         7 |        21 |        41 | 
                    |     2.744 |     0.004 |     3.935 |           | 
                    |     0.317 |     0.171 |     0.512 |     0.488 | 
                    |     0.310 |     0.500 |     0.750 |           | 
                    |     0.155 |     0.083 |     0.250 |           | 
--------------------|-----------|-----------|-----------|-----------|
       Column Total |        42 |        14 |        28 |        84 | 
                    |     0.500 |     0.167 |     0.333 |           | 
--------------------|-----------|-----------|-----------|-----------|
相關文章
相關標籤/搜索