在R中向多路表添加边距
我在R中有以下代码来构建三向列联表:在R中向多路表添加边距,r,contingency,R,Contingency,我在R中有以下代码来构建三向列联表: 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)) 它打印正确
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”
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)将这个新列添加到表中。我不知道是否有更好的方法来实现这一点。
提前感谢您的帮助。对于那些可能感兴趣的人,我通过定义一个函数来计算百分比,然后将其传递给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
您好,您显示的输出与实际输出不符,您可以编辑吗?最终结果应该是什么样的?你到底想要什么样的百分比?我怀疑先计算边际和,然后得到一些百分比是不是一个好主意…;-)我需要被判死刑的人的百分比。我通过p_yes=函数(x)x[1]/sum(x)实现了这一点;mytable=addmargins(mytable,margin=c(3),FUN=list(p_yes))