Добавить поля в многосторонние таблицы в R - PullRequest
1 голос
/ 28 мая 2020

У меня есть следующий код в 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))

Он печатается правильно

             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

Я хотел бы добавить «процент_да» после столбца «нет» с сохранением структуры таблицы.

                 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). Не знаю, есть ли sh лучший способ сделать это. Заранее благодарим за помощь.

1 Ответ

2 голосов
/ 01 июня 2020

Для тех, кто может быть заинтересован, мне удалось это сделать, определив функцию для вычисления процента, а затем передать ее в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...