向 R 中的多向表添加边距

Add margins to multi-way tables in R

我在 R 中有以下代码来构建三向应急 table:

txt="   death_p yes no
v_race  d_race      
white   white   53  414
black   11  37
black   white   0   16
black   4   139"

mytable = as.table(read.ftable(textConnection(txt)))
mytable = addmargins(mytable, margin=c(1))

打印正确

             death_p yes  no
v_race d_race                
white  white           53 414    
       black           11  37
black  white            0  16
       black            4 139
Sum    white           53 430
       black           15 176

我想在列 "no" 后添加一个 "percentage_yes",以保留 table 的结构。

                 death_p yes  no  %yes
v_race d_race                
white  white             53   414  0.11    
       black             11   37   0.00
black  white             0    16   0.11
       black             4    139  0.23
Sum    white             53   430  0.28
       black             15   176  0.79

我试过

subset(as.data.frame(prop.table(mytable, c(1,2))), death_p=="yes", select=c("Freq"))

但我不知道如何使用 Abind(来自 DescTools)将这个新列添加到 table。我不知道是否有更好的方法来实现这一点。 预先感谢您的帮助。

对于那些可能感兴趣的人,我设法通过定义一个函数来计算百分比然后将其传递给 addmargins 来做到这一点。

p_yes = function(x) x[1]/sum(x)
mytable = addmargins(mytable, margin=c(3), FUN = list(p_yes))

给出

               death_p   yes     no     %yes
v_race d_race                
white  white             53.00   414.00  0.11    
       black             11.00   37.00   0.00
black  white             0.00    16.00   0.11
       black             4.00    139.00  0.23
Sum    white             53.00   430.00  0.28
       black             15.00   176.00  0.79