首页 > 解决方案 > Boxplot 在使用 NA 时存在问题 - 查找错误/错误

问题描述

看看这个最小的例子:

library(mosaic) 
library(effects) 
library(openxlsx)
library(corrgram) 
library(GGally) 
library(vcd) 
library(corrplot) 
library(ggpubr)
library(scales)

library(dplyr) 
library(tidyr) 
library(ggplot2) 

#------------------------------------------------------------------
library(naniar)

    l1 = c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,3,3,3,4,5)
    l2 = c("N/A","N/A","N/A","N/A","N/A","N/A","N/A","N/A","N/A","N/A",2,2,2,2,2,3,3,3,4,4)
        
        df <- data.frame (p = c(1:20),
                          q1=l1[1:20],
                          q2=l2[1:20]
        )
        dfn<-df %>% replace_with_na_all(condition = ~.x == "N/A")
        
            
        
        preparedataboxplot <- select(dfn,p,q1,q2) %>% gather(key='Question_num', value='Antwort', -p)
        preparedataboxplot <- preparedataboxplot %>% drop_na()
        preparedataboxplot$Antwort<-unlist(preparedataboxplot$Antwort)
        
        
        ggplot(preparedataboxplot,aes(x=factor(Question_num),y=Antwort))+
          stat_boxplot(geom='errorbar',width=0.8)

如果q2=l1[1:20]那么箱线图将不会按预期显示: 错误

使用q2=l2[1:20]某种方式有效: 在此处输入图像描述

我认为 NA 有问题。谁能找出究竟是什么问题?

标签: rggplot2boxplot

解决方案


尝试这个 :

library(tidyverse)

df <- data.frame (p = 1:20,
                  q1=l1[1:20],
                  q2=l2[1:20])

df[df == 'N/A'] <- NA
df <- type.convert(df, as.is = TRUE)


preparedataboxplot <- select(df,p,q1,q2) %>% gather(key='Question_num', value='Antwort', -p)
preparedataboxplot <- preparedataboxplot %>% drop_na()


ggplot(preparedataboxplot,aes(x=factor(Question_num),y=Antwort))+
  stat_boxplot(geom='errorbar',width=0.8)

推荐阅读