首页 > 解决方案 > 如何确保“NA”“不是”最后一个因素水平?

问题描述

因子函数的文档指出:

因子的代码可能包含 NA。对于数字 x,设置 exclude = NULL 以使 NA 成为额外级别(打印为 );默认情况下,这是最后一级。

我不想要这个。

我当前的数据如下所示:

在此处输入图像描述

我希望根据组内大小对我的因子水平进行排序,这包括我对 NA 值的观察。有没有办法做到这一点?

到目前为止,我已经尝试将我的 NA 值重命名为其他(使用 ifelse() 和 is.na())因子函数中的 exclude=NULL 选项)和 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

标签: rna

解决方案


一个简单的解决方案是在开始时替换 fulldata 中的 NA。我在我的例子中使用了“缺失”。由于这是一个开始的因素,因此您需要将其转换为字符,然后使用 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)

尝试使用按相对频率排序的程序顺序作为因子水平

然后你再次考虑gymnsiegrov

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

和情节:

在此处输入图像描述


推荐阅读