Как убедиться, что «NA» не «последний» уровень фактора? - PullRequest
3 голосов
/ 04 ноября 2019

Документация для функции фактора гласит:

Коды фактора могут содержать NA. Для числового x установите exclude = NULL, чтобы сделать NA дополнительным уровнем (печатается как); по умолчанию это последний уровень.

Я не хочу этого.

Мои текущие данные выглядят так:

enter image description here

Я хочу, чтобы мои уровни факторов были отсортированы по размеру в группе, и это включает в себя мои наблюдения со значениями NA. Есть ли способ сделать это?

До сих пор я пытался переименовать мои значения NA, чтобы что-то еще (используя ifelse () и is.na ()) параметры exclude = NULL в функции factor) ифункция addNA.

Мой текущий код (я создаю отсортированную таблицу, а затем сортирую уровни факторов на основе этого):

vettig_tabell<-table(fulldata$gymnasiegrov,fulldata$totstatus_tri, exclude=NULL)
vettig_tabell<-as.data.frame(vettig_tabell)
vettig_tabell<-spread(vettig_tabell, Var2, Freq)
vettig_tabell<-vettig_tabell%>%mutate(ongoing=`pågående studier`/(`pågående studier` + `tidigt avbrott eller återbud` + `troligt avbrott`))

#sorting by relative frequency#

vettig_tabell<-vettig_tabell%>%arrange(ongoing)

#Trying to use order of programmes sorted on relative frequency as factor levels#

fulldata$gymnasiegrov<-factor(fulldata$gymnasiegrov, , exclude=NULL levels=vettig_tabell$Var1, ordered=TRUE)

fulldata %>%
    as_tibble() %>%
    group_by(gymnasiegrov, totstatus_tri) %>% 
    summarise(antal = n()) %>% 
    mutate(andel = antal / sum(antal))%>% 
    ggplot(.) + 
    geom_col(mapping = aes(x = gymnasiegrov, y = andel)) + 
    coord_flip() + 
    facet_wrap(~totstatus_tri)

Выдержка из данных:

structure(list(gymnasiegrov = c("Hotell- och Restaurang", NA, 
"specialutformat program", "komvux", NA, "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"estetiska programmet", "komvux", "naturvetenskapliga programmet", 
NA, "specialutformat program", "estetiska programmet", "medieprogrammet/medieproduktion", 
"specialutformat program", "specialutformat program", "komvux", 
"estetiska programmet", "samhällsvetenskapliga programmet", "specialutformat program", 
"friskoleprogram", "teknikprogrammet", "specialutformat program", 
"teknikprogrammet", "Handels- och administrationsprogrammet", 
"Hotell- och Restaurang", "samhällsvetenskapliga programmet", 
"samhälls- och ekonomiprogrammet", "specialutformat program", 
"komvux", "specialutformat program", "specialutformat program", 
"bygg, el, fordon, hantverk, sjöfart, industriteknik", "komvux", 
"Handels- och administrationsprogrammet", "teknikprogrammet", 
"teknikprogrammet", "friskoleprogram", "specialutformat program", 
"naturvetenskapliga programmet", "naturvetenskapliga programmet", 
"samhällsvetenskapliga programmet", "ekonomiprogrammet/ ekonomi", 
"samhällsvetenskapliga programmet", "samhällsvetenskapliga programmet", 
"Hotell- och Restaurang", "specialutformat program", "samhällsvetenskapliga programmet", 
"ekonomiprogrammet/ ekonomi", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"ekonomiprogrammet/ ekonomi", "komvux", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"estetiska programmet", "estetiska programmet", "samhällsvetenskapliga programmet", 
"ekonomiprogrammet/ ekonomi", "naturvetenskapliga programmet", 
"ekonomiprogrammet/ ekonomi", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"ekonomiprogrammet/ ekonomi", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"ekonomiprogrammet/ ekonomi", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"naturvetenskapliga programmet", "Handels- och administrationsprogrammet", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"bygg, el, fordon, hantverk, sjöfart, industriteknik", "ekonomiprogrammet/ juridik", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ juridik", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"ekonomiprogrammet/ ekonomi", "Handels- och administrationsprogrammet", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "estetiska programmet", 
"ekonomiprogrammet/ ekonomi", "teknikprogrammet", "samhällsvetenskapliga programmet", 
"naturvetenskapliga programmet", "naturvetenskapliga programmet", 
"teknikprogrammet", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "samhällsvetenskapliga programmet", 
"samhällsvetenskapliga programmet", "naturvetenskapliga programmet", 
"ekonomiprogrammet/ juridik", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ juridik", 
"samhällsvetenskapliga programmet", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", 
"samhällsvetenskapliga programmet", "samhällsvetenskapliga programmet", 
"samhällsvetenskapliga programmet", "ekonomiprogrammet/ juridik", 
"teknikprogrammet", "teknikprogrammet", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "naturvetenskapliga programmet", 
"naturvetenskapliga programmet", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "naturvetenskapliga programmet", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ juridik", 
"teknikprogrammet", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "naturvetenskapliga programmet", 
"ekonomiprogrammet/ juridik", "naturvetenskapliga programmet", 
"teknikprogrammet", "ekonomiprogrammet/ juridik", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", 
"samhällsvetenskapliga programmet", "ekonomiprogrammet/ ekonomi", 
"samhällsvetenskapliga programmet", "estetiska programmet", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ juridik", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "teknikprogrammet", 
"naturvetenskapliga programmet", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ juridik", "ekonomiprogrammet/ ekonomi", 
NA, NA, NA, NA, NA, NA, NA, NA), totstatus_tri = c("troligt avbrott", 
"tidigt avbrott eller återbud", "pågående studier", "troligt avbrott", 
"troligt avbrott", "pågående studier", "pågående studier", "pågående studier", 
"pågående studier", "pågående studier", "pågående studier", "tidigt avbrott eller återbud", 
"tidigt avbrott eller återbud", "pågående studier", "tidigt avbrott eller återbud", 
"tidigt avbrott eller återbud", "pågående studier", "pågående studier", 
"troligt avbrott", "pågående studier", "pågående studier", "tidigt avbrott eller återbud", 
"troligt avbrott", "tidigt avbrott eller återbud", "pågående studier", 
"pågående studier", "pågående studier", "troligt avbrott", "troligt avbrott", 
"pågående studier", "pågående studier", "pågående studier", "pågående studier", 
"pågående studier", "tidigt avbrott eller återbud", "pågående studier", 
"pågående studier", "pågående studier", "pågående studier", "tidigt avbrott eller återbud", 
"pågående studier", "pågående studier", "tidigt avbrott eller återbud", 
"pågående studier", "tidigt avbrott eller återbud", "tidigt avbrott eller återbud", 
"tidigt avbrott eller återbud", "tidigt avbrott eller återbud", 
"pågående studier", "troligt avbrott", "tidigt avbrott eller återbud", 
"pågående studier", "tidigt avbrott eller återbud", "pågående studier", 
"troligt avbrott", "pågående studier", "pågående studier", "pågående studier", 
"pågående studier", "tidigt avbrott eller återbud", "pågående studier", 
"pågående studier", "tidigt avbrott eller återbud", "pågående studier", 
"pågående studier", "tidigt avbrott eller återbud", "tidigt avbrott eller återbud", 
"tidigt avbrott eller återbud", "pågående studier", "troligt avbrott", 
"tidigt avbrott eller återbud", "pågående studier", "pågående studier", 
"pågående studier", "pågående studier", "tidigt avbrott eller återbud", 
"tidigt avbrott eller återbud", "pågående studier", "pågående studier", 
"pågående studier", "pågående studier", "pågående studier", "pågående studier", 
"pågående studier", "pågående studier", "pågående studier", "pågående studier", 
"pågående studier", "tidigt avbrott eller återbud", "pågående studier", 
"pågående studier", "pågående studier", "pågående studier", "pågående studier", 
"troligt avbrott", "troligt avbrott", "pågående studier", "pågående studier", 
"tidigt avbrott eller återbud", "pågående studier", "tidigt avbrott eller återbud", 
"pågående studier", "pågående studier", "pågående studier", "tidigt avbrott eller återbud", 
"pågående studier", "troligt avbrott", "tidigt avbrott eller återbud", 
"pågående studier", "pågående studier", "troligt avbrott", "pågående studier", 
"pågående studier", "tidigt avbrott eller återbud", "tidigt avbrott eller återbud", 
"pågående studier", "pågående studier", "pågående studier", "troligt avbrott", 
"pågående studier", "tidigt avbrott eller återbud", "pågående studier", 
"tidigt avbrott eller återbud", "troligt avbrott", "pågående studier", 
"pågående studier", "pågående studier", "pågående studier", "troligt avbrott", 
"pågående studier", "pågående studier", "pågående studier", "pågående studier", 
"pågående studier", "pågående studier", "pågående studier", "tidigt avbrott eller återbud", 
"troligt avbrott", "pågående studier", "pågående studier", "tidigt avbrott eller återbud", 
"tidigt avbrott eller återbud", "pågående studier", "pågående studier", 
"troligt avbrott", "troligt avbrott", "pågående studier", "tidigt avbrott eller återbud", 
"tidigt avbrott eller återbud", "pågående studier", "troligt avbrott", 
"pågående studier", "pågående studier", "tidigt avbrott eller återbud", 
"pågående studier", "pågående studier", "pågående studier", "pågående studier", 
"troligt avbrott", "pågående studier", "pågående studier", "pågående studier"
)), class = "data.frame", row.names = c(NA, -162L))

  [1]: https://i.stack.imgur.com/i6emH.png

Ответы [ 2 ]

2 голосов
/ 04 ноября 2019

Вот один из способов сделать это:

library(tidyverse)

fulldata %>%
  as_tibble() %>%
  group_by(gymnasiegrov, totstatus_tri) %>% 
  summarise(antal = n()) %>% 
  mutate(andel = antal / sum(antal)) %>%
  ungroup %>%
  replace_na(list(gymnasiegrov = 'NA')) %>%
  arrange(desc(andel)) %>%
  mutate(gymnasiegrov = factor(gymnasiegrov, levels = unique(gymnasiegrov))) %>%
  ggplot() + 
  geom_col(mapping = aes(x = gymnasiegrov, y = andel)) + 
  coord_flip() + 
  facet_wrap(~totstatus_tri)

enter image description here

2 голосов
/ 04 ноября 2019

простое решение - заменить NA в fulldata в начале. Я использую «Отсутствует» в моем примере. Поскольку для начала это был фактор, вам необходимо преобразовать его в символ, а затем использовать replace_NA

fulldata <- fulldata %>% mutate(gymnasiegrov=replace_na(as.character(gymnasiegrov),"Missing"))

. Затем выполните табуляцию.

    vettig_tabell<-table(fulldata$gymnasiegrov,fulldata$totstatus_tri, exclude=NULL)
    vettig_tabell<-as.data.frame(vettig_tabell)
    vettig_tabell<-spread(vettig_tabell, Var2, Freq)
    vettig_tabell<-vettig_tabell%>%mutate(ongoing=`pågående studier`/(`pågående studier` + `tidigt avbrott eller återbud` + `troligt avbrott`))

#sorting by relative frequency#

vettig_tabell<-vettig_tabell%>%arrange(ongoing)

Попытка использовать порядок программотсортированы по относительной частоте как коэффициенты уровней

Затем вы снова учитываете гимназигров

fulldata$gymnasiegrov<-factor(fulldata$gymnasiegrov,levels=vettig_tabell$Var1, ordered=TRUE)

И график:

enter image description here

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