Как сгенерировать массив данных пропорций в R на основе числа фиктивных переменных? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть кадр данных в R, который имеет идентификационный номер, и около 5 категориальных переменных, указывающих, попадает ли каждый идентификатор в определенную категорию.Например:

ID #  category1 category2 category3 category4 category5
1      1          0        1         0          0
2      0          0        0         0          0
3      1          1        1         0          0

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

          category1 category2 category3 category4 category5
proportion  22.23%   16.78%    34.56%      9.31%     3.45%

Затем я бы хотел взять этот фрейм данных и создать гистограммы с каждой категорией на оси x и пропорцией 1 на оси y.ось.

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

Спасибо.

1 Ответ

0 голосов
/ 19 мая 2018
# create some data
N = 500
df <- data.frame(ID = 1:N, 
                 category1 = sample(c(1,0), N, replace=TRUE, prob=c(0.4,0.6)),
                 category2 = sample(c(1,0), N, replace=TRUE, prob=c(0.8,0.2)),
                 category3 = sample(c(1,0), N, replace=TRUE, prob=c(0.5,0.5)),
                 category4 = sample(c(1,0), N, replace=TRUE, prob=c(0.3,0.7)),
                 category5 = sample(c(1,0), N, replace=TRUE, prob=c(0.9,0.1)))

# calculate column percentages
df.percent <- colMeans(df[,-1])

# graph barplot
b <- barplot( df.percent, 
              ylim = c(0,1), 
              col=rgb(0.2,0.4,0.6,0.6))

# Add text
text(b,  df.percent, labels=paste0(round(df.percent, 2),"%"), pos=3)

enter image description here

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