100% процентная доля в R - PullRequest
       0

100% процентная доля в R

1 голос
/ 22 февраля 2020

У меня есть такой набор данных:

enter image description here

Я хочу создать 100% гистограмму из этого ... такого, что есть 100% -ая полоса для статуса и 100% -ная полоса для Типа .... примерно так: enter image description here

На рисунке только 1 полоса для статуса, но я буду sh для двух столбцов рядом, 1 для статуса, 1 для типа ..

Буду признателен за любую помощь, я хочу сделать это в R

Ответы [ 2 ]

0 голосов
/ 22 февраля 2020

Простое базовое решение R:

p1 <- as.matrix(prop.table(table(data$status))) * 100
p2 <- as.matrix(prop.table(table(data$Type))) * 100

op <- par(mfrow=c(1,2), las=1, mar=c(3,4,1,0))
barplot(p1, legend=TRUE, names="status", ylab="Percent")
barplot(p2, legend=TRUE, names="Type")
par(op)

enter image description here


data <- data.frame(id=1:10, 
                   status=c("P","F","F","P","F","P","P","F","P","P"),
                   Type=c("full","full","full","part","part","full","full","part","part","full"))

data
   id status Type
1   1      P full
2   2      F full
3   3      F full
4   4      P part
5   5      F part
6   6      P full
7   7      P full
8   8      F part
9   9      P part
10 10      P full

Возможно с ggplot2

data %>%
  pivot_longer(-id) %>%
  group_by(name, value) %>%
  summarise(n=n()) %>%
  ggplot(aes(fill=value, y=n, x=name)) + 
  geom_bar(position="fill", stat="identity") # Needs polishing 
0 голосов
/ 22 февраля 2020

Несмотря на то, что предоставленная информация действительно немного скудна, Вы, похоже, ищете сгруппированную полосу с процентами. Вы можете попробовать что-то вроде:

# Some sample data:
dta <- tibble(id = 1:10,
              status = rbernoulli(n = 10, p = 0.3),
              type = rbernoulli(n = 10, p = 0.6))

# Transformation and plotting:
dta %>%
  pivot_longer(c(status, type), names_to = "variable") %>%
  group_by(variable, value) %>%
  summarize(percent = n()) %>%
  mutate(percent = percent / sum(percent)) %>%
  ungroup() %>%
  ggplot() +
  aes(x = variable, y = percent, fill = value) +
  geom_bar(stat = "identity") +
  theme_bw()

В результате:

Помогает ли это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...