Переменная частота/количество в r studio

Давний соглядатай, обычно использует SPSS/график для статистики, медленно, но верно изучает, как использовать R studio.

В SPSS у меня есть набор данных с тремя переменными: страхование (категориальное, 4 уровня); npo_violation (категория, 2 уровня) и частота (шкала, представляет частоту, с которой, например, Medicaid нарушала/не нарушала npo).пример набора данных в SPSS

Я пытаюсь внести этот набор данных с переменной подсчета частоты в r-studio, чтобы я мог создавать сгруппированные гистограммы на основе процентного соотношения комбинаций.

Я использовал иностранный / Haven / Hmisc, чтобы принести его в r studio, а также создал его сам.

df_sample <- data.frame(insurance = c("Medicaid", "Medicaid", "Blue Cross", "Blue Cross",
                                      "Managed Care", "Managed Care",
                                      "Other", "Other"), 
                        npo_violation=c("No", "Yes",
                                        "No", "Yes",
                                        "No", "Yes",
                                        "No", "Yes"),
                        wt=c(18075, 438, 14691, 109, 6006, 53, 3098, 25))

Я не уверен, как сделать так, чтобы переменная количества/частоты могла использоваться для вычисления процента/счета каждой категориальной комбинации. Так, например, рассчитайте (а затем постройте график) процент «медикейд + отсутствие нарушения нпо» и «медикейд + да нарушение нпо», которые я пытался использовать с помощью функции wtd.table

wtd.table(df_sample$insurance, df_sample$npo_violation, weights=wt)

но я знаю, что это неправильно, и получаю сообщение об ошибке "Ошибка в match.arg(type): 'arg' должен быть NULL или вектором символов".

Я очень боюсь публиковать здесь, но буду очень признателен за любую помощь. Использование R занимает меня вечно, но это очень приятно. Спасибо.

РЕДАКТИРОВАТЬ: В конечном счете, я хотел бы построить ось x: две переменные, «нет» и «да». легенда будет иметь 4 категории: медицинская помощь, синий крест, управляемая помощь, другое. ось y будет представлять собой проценты, на которые каждая страховая группа приходится в пределах «да» и «нет», как показано в кросс-таблице, которую я сделал в spss введите здесь описание изображения


person rhinomania    schedule 10.06.2020    source источник
comment
Привет, Рино, можешь отредактировать свой вопрос, чтобы объяснить I am not sure how to make it such that the count/frequency variable is reflected to be what I want it? Это звучит как простая проблема программирования, но я не уверен, что понимаю желаемый результат. Возможно, вы можете вставить ожидаемый результат кода, который вы ищете. Спасибо :)   -  person mysteRious    schedule 11.06.2020
comment
Вы хотите sum столбец wt для insurance и npo_violation? Попробуйте aggregate(wt~insurance+npo_violation, df_sample, sum)   -  person Ronak Shah    schedule 11.06.2020


Ответы (1)


Вот два графика на основе ваших данных:

library(dplyr)
library(magrittr)
library(ggplot2)

df_sample %>% 
   mutate(percent=wt/sum(wt)) %>%    # calculates percent
   ggplot() +                        # launches plotter 
   geom_bar(aes(x=insurance, y=percent, fill=npo_violation), 
        stat="identity",position=position_dodge())  # bars

который генерирует это:

введите здесь описание изображения

В приведенном выше примере вы можете поменять местами переменные в x и fill, чтобы получить противоположную группировку. Вы также можете сделать:

df_sample %>% 
   mutate(tag=paste(insurance, npo_violation)) %>%     # combines labels
   mutate(percent=wt/sum(wt)) %>%                      # calculates percent
   ggplot(aes(x=tag,y=percent)) +                      # launches plotter
   geom_bar(stat="identity") +                         # tells it to take wt literally
   theme(axis.text.x=element_text(angle=45, hjust=1))  # x axis labels

введите здесь описание изображения

person mysteRious    schedule 11.06.2020
comment
черт возьми, это было быстро. и удивительно. Я думаю, что я на самом деле пытаюсь сделать, это построить гистограмму «да» и «нет» по оси абсцисс с относительными пропорциями/процентами, которые каждая страховка сделала для «да» и «нет». Я редактирую свой первоначальный пост, чтобы включить кросс-таблицу с процентами, которые я бы ЛЮБИЛ, чтобы иметь возможность построить график. - person rhinomania; 11.06.2020
comment
если это работает так, как вам нравится, отметьте его галочкой, в противном случае дайте мне знать, есть ли еще другие способы, которые вам нужно изучить, чтобы завершить этот вопрос. - person mysteRious; 11.06.2020
comment
Я немного изменил его df_sample %›% mutate(percent=wt/sum(wt)) %›% # вычисляет проценты ggplot() + # запускает плоттер geom_bar(aes(x=npo_violation, y=percent, fill=insurance) , stat=identity,position=position_dodge()) # баров СПАСИБО!! Действительно избавил меня от нервозности, когда я писал сюда :) - person rhinomania; 11.06.2020
comment
Я думаю, что единственный пробел заключается в печати кросс-таблицы, как вы показали выше... эта часть проста, если у вас есть все наблюдения по отдельности, потому что CrossTable в пакетеgmodels может их подсчитать и отобразить отформатированную SPSS таблицу. С уже рассчитанными процентами это не так прямолинейно. Спасибо и удачи в обучении! - person mysteRious; 11.06.2020