处理高维表

时间:2011-05-03 18:01:16

标签: r

我有一张桌子,我经常用R计算它有三个维度。我想在(这里是5个)边缘表中添加一些表。我通常做的是:

    A=sample(LETTERS[1:5],100, rep=T)

    b=sample(letters[1:2],100, rep=T)

    numbers=sample(1:3,100, rep=T)

   ( tab=table(A,b,numbers) )
   ( tab1=ftable(addmargins(tab)) )

我想添加前几个边缘表的总和,然后是底部剩余表的总和,然后是总计。我可以想象,在得到的ftable中我会想要As,Bs,Cs,然后是那三个的总和,然后是Ds,Es和这两个的总和,然后是所有表的总和,如:< / p>

         numbers   1   2   3 Sum
    A   b                          
    A   a             1   5   0   6
        b             4   2   2   8
        Sum           5   7   2  14
    B   a             2   6   6  14
        b             5   4   5  14
        Sum           7  10  11  28
    C   a             3   2   5  10
        b             1   2   2   5
        Sum           4   4   7  15
  sumac a             6  13  11  30   #### how do i add these three lines
        b               ....
        sum             ....
    D   a             2   1   1   4
        b             4   5   3  12
        Sum           6   6   4  16
    E   a             5   3   4  12
        b             4   3   8  15
        Sum           9   6  12  27
  sumde a             7   4   5  20   #### and these
        b               ....
        sum               ....
  sumae a            13  17  16  46
        b            18  16  20  54
        Sum          31  33  36 100

像往常一样,我认为解决方案比问题多得多。谢谢 赛斯拉蒂默

1 个答案:

答案 0 :(得分:1)

你可以这样做:

isABC<-ifelse(A %in% c("A", "B", "C"), "ABC", "CD")
( tab=table(isABC,A,b,numbers) )
( tab1=ftable(addmargins(tab)) )

现在你有一个更大的表,它可以容纳比你想要的更多的行,但那些应该很容易丢弃......