2013-02-02 48 views
0

可能重複:
How to create a prop.table() for a three dimension table?計算三路表的比例

我是新來[R,我一直在一個三個表,需要一些幫助。這是通過dput表說明:

mytable <- structure(c(42L, 151L, 313L, 69L, 22L, 46L, 47L, 24L, 17L, 36L, 108L, 16L), .Dim = c(2L, 2L, 3L), .Dimnames = list(c("0", "1"), c("female", "male"), c("adult", "child", "unknown")), class = "table") 

我想通過使用屬性名訪問此表的元素。例如: mytable["0"]["female"]["adult"]可以這樣做嗎?

此外,我試圖計算比例。這是我的表...

, , adult 

     female male 
    0  42 313 
    1 151 69 

    , , child 

     female male 
    0  22 47 
    1  46 24 

    , , unknown 

     female male 
    0  17 108 
    1  36 16 

我想計算年齡組比例 - 性別-0 | 1。當我運行prop.table(mytable)它正在計算細胞的比例,但它正在考慮所有三個年齡組。

, , adult 

      female  male 
    0 0.04713805 0.35129068 
    1 0.16947250 0.07744108 

    , , child 

      female  male 
    0 0.02469136 0.05274972 
    1 0.05162738 0.02693603 

    , , unknown 

      female  male 
    0 0.01907969 0.12121212 
    1 0.04040404 0.01795735 

我希望每個年齡段和性別的比例。例如:在所有的成年人中,有1的女性是78%。我們如何做到這一點 ?

+0

你能發佈輸出(mytable)'的輸出? –

回答

1

這是你正在追逐的?

數據:

test <- structure(c(42L, 151L, 313L, 69L, 22L, 46L, 47L, 24L, 17L, 36L, 108L, 16L), .Dim = c(2L, 2L, 3L), .Dimnames = list(c("0", "1"), c("female", "male"), c("adult", "child", "unknown")), class = "table") 

獲取每個子表中的列百分比(2)(3):

prop.table(test,c(2,3)) 

結果:

, , adult 

    female  male 
0 0.2176166 0.8193717 
1 0.7823834 0.1806283 

, , child 

    female  male 
0 0.3235294 0.6619718 
1 0.6764706 0.3380282 

, , unknown 

    female  male 
0 0.3207547 0.8709677 
1 0.6792453 0.1290323 
+0

謝謝。這是我追逐的。你能幫我理解,c(2,3)在做什麼? –

+0

@ShanthanKesharaju - 當你做'prop.table'時,你選擇你希望得到的百分比表中的哪一部分。 '1'給出行百分比,'2'給出列的百分比,'3'給出子表內的百分比。然後你可以合併它們,所以'c(2,3)'給你在每個子表內的列百分比。 – thelatemail

+0

太棒了,只是後續問題。當它可以大於3時,如4或5 –

1

一個更簡單的方法可能是讓你的表data.frame:

df <- as.data.frame(mytable) 

然後根據你想獲得的值爲零:

df[df$Var1 == 0,] 

對於比例那麼你可以做:

df <- transform(df,total = ave(Freq, Var3, FUN = sum)) 
# get totals within adult/child/unkown 

df <- transform(df,props = Freq/total) 
# make proportions 



# > df 
# Var1 Var2 Var3 Freq total  props 
#1  0 female adult 42 575 0.07304348 
#2  1 female adult 151 575 0.26260870 
#3  0 male adult 313 575 0.54434783 
#4  1 male adult 69 575 0.12000000 
#5  0 female child 22 139 0.15827338 
#6  1 female child 46 139 0.33093525 
#7  0 male child 47 139 0.33812950 
#8  1 male child 24 139 0.17266187 
#9  0 female unknown 17 177 0.09604520 
#10 1 female unknown 36 177 0.20338983 
#11 0 male unknown 108 177 0.61016949 
#12 1 male unknown 16 177 0.09039548