【问题标题】:Removing missing from ggplots bar chart从 ggplots 条形图中删除缺失
【发布时间】:2020-12-30 15:43:26
【问题描述】:

我一直在使用以下代码来生成特定变量的 ggplots 条形图:

    ggplot(RPSdata, aes(x = RF.Age)) +
  geom_bar(col="black",
           fill ="grey",
           alpha = .8) + 
  (aes(y = (..count..)/sum(..count..))) + 
             scale_y_continuous(labels=percent) +
  labs(title="Risk Factor - Age", x ="Estimate", y="Proportion of Total") +
  ggtitle("Risk Factor - Age") + theme(plot.title = element_text(hjust = 0.5)) +
  scale_x_discrete(labels = c("No", "Yes", "Not Sure", "Missing"))

我对结果很满意,但也想从图表和 Y 轴百分比的计算中生成排除 NA/缺失的版本。我该怎么做?

非常感谢

数据样本:

> dput(head(RPSdata, 5))
structure(list(ï..ID.Rank = c(NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_), Identifiable = c(0L, 0L, 0L, 0L, 0L), Population.Risk = structure(c(1L, 
2L, 1L, 2L, 2L), .Label = c("1", "2", "3", "4", "5", "6"), class = "factor"), 
    Personal.Risk = c(50, 50, 60, 70, 25), Comparative.Risk.Age = structure(c(3L, 
    5L, 3L, 4L, 4L), .Label = c("1", "2", "3", "4", "5"), class = "factor"), 
    Comparative.Risk.Current = structure(c(NA, 3L, NA, 4L, NA
    ), .Label = c("1", "2", "3", "4", "5"), class = "factor"), 
    Comparative.Risk.Ex = structure(c(NA, NA, NA, NA, 3L), .Label = c("1", 
    "2", "3", "4", "5"), class = "factor"), Score.Exposure = structure(c(1L, 
    1L, 2L, NA, 1L), .Label = c("1", "2", "4", "5"), class = "factor"), 
    RF.Age = structure(c(3L, 2L, 3L, NA, 2L), .Label = c("0", 
    "1", "2"), class = "factor"), RF.Pollution = structure(c(3L, 
    2L, 2L, NA, 1L), .Label = c("0", "1", "2"), class = "factor"), 
    RF.Asbestos = structure(c(NA, 1L, 1L, NA, 1L), .Label = c("1", 
    "2"), class = "factor"), RF.Asthma = structure(c(2L, 2L, 
    2L, NA, 2L), .Label = c("0", "1", "2"), class = "factor"), 
    RF.BMI = structure(c(3L, 2L, 2L, NA, 3L), .Label = c("0", 
    "1", "2"), class = "factor"), RF.Gene = structure(c(3L, 2L, 
    3L, NA, 1L), .Label = c("0", "1", "2"), class = "factor"), 
    RF.COPD = structure(c(2L, 2L, 2L, NA, 3L), .Label = c("0", 
    "1", "2"), class = "factor"), RF.History = structure(c(1L, 
    2L, 2L, NA, 3L), .Label = c("0", "1", "2"), class = "factor"), 
    RF.Diet = structure(c(3L, 2L, 2L, NA, 2L), .Label = c("0", 
    "1", "2"), class = "factor"), RF.Radon = structure(c(3L, 
    2L, 3L, NA, 3L), .Label = c("0", "1", "2"), class = "factor"), 
    RF.Smoking = structure(c(2L, 2L, 2L, NA, 2L), .Label = c("0", 
    "1", "2"), class = "factor"), RF.Second.Smoke = structure(c(2L, 
    2L, 2L, NA, 2L), .Label = c("0", "1", "2"), class = "factor"), 
    Survival.One.Year = c(90, 50, 70, 80, 75), Survival.Five.Year = c(50, 
    NA, 50, NA, 50), Survival.Ten.Year = c(20, NA, 15, NA, 25
    ), Worry.Frequency = structure(c(1L, 4L, 2L, 2L, 3L), .Label = c("1", 
    "2", "3", "4"), class = "factor"), Worry.Intensity = structure(c(4L, 
    4L, 3L, 3L, 3L), .Label = c("1", "2", "3", "4"), class = "factor"), 
    Mental.Health.One = structure(c(4L, 4L, 2L, 4L, 3L), .Label = c("0", 
    "1", "2", "3"), class = "factor"), Mental.Health.Two = structure(c(3L, 
    4L, 2L, 3L, 2L), .Label = c("0", "1", "2", "3"), class = "factor"), 
    Mental.Health.Three = structure(c(3L, 4L, 2L, 4L, 4L), .Label = c("0", 
    "1", "2", "3"), class = "factor"), Mental.Health.Four = structure(c(4L, 
    4L, 2L, 4L, 4L), .Label = c("0", "1", "2", "3"), class = "factor"), 
    PHQ4 = c(10L, 12L, 4L, 11L, 9L), PHQ4.Anx = c(5L, 6L, 2L, 
    5L, 3L), PHQ4.Dep = c(5L, 6L, 2L, 6L, 6L), PHQ4.Bin = c(3L, 
    3L, 1L, 3L, 3L), Dep.Bin = c(1L, 1L, 0L, 1L, 1L), Anx.Bin = c(1L, 
    1L, 0L, 1L, 1L), Survival.Complete.Sense = c(1L, 0L, 1L, 
    0L, 1L), Survival.Semi.Sense = c(1L, 1L, 1L, 1L, 1L), PLCO.actual = c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_), Age = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), Sex = c(NA, 
    NA, NA, NA, NA), Female = c(NA_integer_, NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_), Ethnicity = structure(c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), .Label = c(" ", 
    "Any Other Ethnic Group", "Asian/Asian Brit - Pakistani", 
    "Black/Blk Brit-Any oth Blk b/g", "Black/Blk Brit-Caribbean", 
    "Mixed-White & Black African", "Not Known", "Not Stated", 
    "White - any other White b/g", "White - British", "White - Irish"
    ), class = "factor"), Ethnicity.Code = c(NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_), Education = c(NA, 
    NA, NA, NA, NA), Education.Code = c(NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_), Pack.Years = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), Previous.condition = structure(c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), .Label = c(" ", 
    "Angina", "Asthma", "Chronic kidney disease", "COPD", "Diabetes", 
    "Heart attack", "Heart failure", "High blood pressure", "High cholesterol", 
    "Lung or pulmonary fibrosis", "Mini-stroke (TA)", "None", 
    "Peripheral vascular disease/Claudication", "Pneumonia", 
    "Rheumatoid arthritis", "Stroke", "Tuberculosis or TB"), class = "factor"), 
    Previous.condition.code = c(NA_integer_, NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_), Prevous.condition.any = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), Asbestos = structure(c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), .Label = c(" ", 
    "no", "no (but high risk occupation)", "yes"), class = "factor"), 
    Asbestos.code = c(NA_integer_, NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_), BMI = c(NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_), Family.Lung.Cancer = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), Personal.Cancer.History = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), Smoking.status.direct = structure(c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), .Label = c(" ", 
    "current smoker", "former smoker"), class = "factor"), Smoking.status.directandderived.code = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), Comparative.sense = structure(c(4L, 
    2L, 4L, 2L, 3L), .Label = c(" ", "Anon Current", "Anon Ex", 
    "Blank", "Completed Both", "Current Completed as Ex", "Current Correct", 
    "Ex Completed Current", "Ex Correct"), class = "factor"), 
    Valid.Comparative.Smoke = c(0L, 1L, 0L, 1L, 1L), PLCO_Quartiles = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), filter_. = c(0L, 
    0L, 0L, 0L, 0L), Education_3Groups = c(NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_), Education_2Groups = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), PersonalRisk_Quintiles = c(5L, 
    5L, 5L, 5L, 3L), PersonalRisk_Quintiles_NHSOnly = c(5L, 5L, 
    5L, 5L, 4L), BMI_Cat = c(NA_integer_, NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_), Age_mean = c(NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_), CompRiskAge_3groups = c(2L, 
    3L, 2L, 3L, 3L), Asbestos_2groups = c(NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_), RF.History_binary = c(0L, 
    1L, 1L, NA, 0L), RF.Age_Binary = c(0L, 1L, 0L, NA, 1L), RF.Pollution_Binary = c(0L, 
    1L, 1L, NA, 0L), RF.Asbestos_Binary = c(NA, 1L, 1L, NA, 1L
    ), RF.Gene_Binary = c(0L, 1L, 0L, NA, 0L), RF.COPD_Binary = c(1L, 
    1L, 1L, NA, 0L), RF.Radon_Binary = c(0L, 1L, 0L, NA, 0L), 
    RF.Smoking_Binary = c(1L, 1L, 1L, NA, 1L), RF.Second.Smoke_Binary = c(1L, 
    1L, 1L, NA, 1L), RF.BMI_Binary = c(0L, 0L, 0L, NA, 0L), RF.Diet_Binary = c(0L, 
    0L, 0L, NA, 0L), RF.Asthma_Binary = c(0L, 0L, 0L, NA, 0L), 
    PopulationRisk_correct = c(0L, 0L, 0L, 0L, 0L), PopRisk_3groups = c(3L, 
    3L, 3L, 3L, 3L), Worry.Freq_Any = c(0L, 1L, 1L, 1L, 1L), 
    Worry.Intensity_Any = c(1L, 1L, 1L, 1L, 1L), PLCOthreshold = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), ComparativeMulti_High = c(1L, 
    2L, 1L, 2L, 2L), ComparativeMulti_Low = c(1L, 1L, 1L, 1L, 
    1L)), row.names = c(NA, 5L), class = "data.frame")

【问题讨论】:

    标签: r ggplot2 charts bar-chart


    【解决方案1】:

    这会有所帮助:

    #Code
    ggplot(subset(RPSdata,!is.na(RF.Age)), aes(x = RF.Age)) +
      geom_bar(col="black",
               fill ="grey",
               alpha = .8) + 
      (aes(y = (..count..)/sum(..count..))) + 
      scale_y_continuous(labels=scales::percent,limits = c(0,1)) +
      geom_text(stat='count', aes(label=..count..),vjust=-0.25)+
      labs(title="Risk Factor - Age", x ="Estimate", y="Proportion of Total") +
      ggtitle("Risk Factor - Age") + theme(plot.title = element_text(hjust = 0.5)) +
      scale_x_discrete(labels = c("No", "Yes", "Not Sure", "Missing"))
    

    【讨论】:

    • 非常感谢!有没有办法将每个条中的实际主题数量添加到条本身?
    • @Mikey 我已经为你更新了代码,如果可行,请告诉我!
    • 你是个巫师!非常感谢。我是一个完全的新手!我可以再问一个问题吗?有没有办法强制Y轴跑到100%?
    • @Mikey 我已经为你更新了代码,如果有帮助请告诉我。
    • @Mikey 总是乐于助人!
    猜你喜欢
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 2017-03-09
    • 1970-01-01
    • 2011-07-12
    相关资源
    最近更新 更多