Добавить счетчик частоты в 2x2 prop.table - PullRequest
0 голосов
/ 24 сентября 2019

Как добавить частоту в таблицу 2x2 prop?Таким образом, здесь «набор данных» содержит две категориальные переменные.

 dataset %>% prop.table(margin = 2) %>% '*' (100) %>% round(2)

Я бы хотел, чтобы количество было в дополнение к процентам каждой категории.

Извините за пример с дурманом, но он должен выглядеть следующим образом, за исключением того, что сумма не должна указываться в каждой ячейке.

enter image description here

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

addmargins применительно к вашему столу может делать то, что вы хотите.

set.seed(34)
n <- 20
tab <- table(sample(1:3, n, replace = TRUE), sample(c("A", "B"), n, replace = TRUE))
addmargins(tab)
0 голосов
/ 24 сентября 2019

Воспроизводимый пример и решение:

tab <-iris %>% mutate(size = factor(1+(Sepal.Length>median(iris$Sepal.Length)),levels = 1:2, labels = c('S','L'))) %>%
  select(Species, size) %>%
  table()
prop <- prop.table(tab,margin = 2) %>% '*' (100) %>% round(2)

matrix(paste(tab,prop),nrow = nrow(tab),dimnames = dimnames(tab))

дает

            size
Species      S         L         
  setosa     "50 62.5" "0 0"     
  versicolor "24 30"   "26 37.14"
  virginica  "6 7.5"   "44 62.86"

или другое решение:

iris %>% mutate(size = factor(1+(Sepal.Length>median(iris$Sepal.Length)),levels = 1:2, labels = c('S','L'))) %>%
  group_by(Species, size) %>%
  summarise(n = n()) %>%
  group_by(size) %>%
  mutate(p = paste(n,round(n/sum(n)*100,2))) %>%
  select(-n) %>%
  spread(size,p,fill = paste(0,0))

дает

# A tibble: 3 x 3
  Species    S       L       
  <fct>      <chr>   <chr>   
1 setosa     50 62.5 0 0     
2 versicolor 24 30   26 37.14
3 virginica  6 7.5   44 62.86
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...