R:子集的图仍然包含排除的属性,我如何在没有它们的情况下绘制图?

R: Plots of subset still include excluded attributes, how do I get draw a plot without them?

我正在尝试在 R 中绘制箱线图:

我有一个包含 70 个属性的数据集: 格式为

  patient number       medical_speciality      number_of_procedures
   111                    Ortho                      21
   232                    Emergency                  16
   878                    Pediatrics                 20
   981                    OBGYN                      31
   232                    Care of Elderly            15
   211                    Ortho                      32
   238                    Care of Elderly            11
   219                    Care of Elderly            6
   189                    Emergency                  67
   323                    Emergency                  23
   189                    Pediatrics                 1
   289                    Ortho                      34

我一直在尝试让一个子集只包含箱线图中的急诊、儿科(现实中有 10000 多个数据点)

我以为我可以这样做:

newdata<-subset(olddata[ms$medical_specialty=='emergency'|olddata$medical_specialty=='pediatrics',])
plot(newdata)    

因为如果我做一个新数据的总结,它只有儿科和急诊结果。但是当涉及到绘图时,它仍然在没有箱线图的情况下在 x 轴上包括邻位、妇产科、老年人护理。

我想在 ggplot 中有一种方法可以做到这一点

ggplot(newdata, aes(x=medical_speciality, y=num_of_procedures, fill=cond)) + geom_boxplot()

但这给了我错误: 不知道如何为 data.frame 类型的对象自动选择比例。

默认为连续 错误:美学必须是长度一,或与 dataProblems:cond

长度相同

有人能帮帮我吗?

我认为您的问题是因为 medical_speciality 列是一个因素。

因此,即使您以正确的方式对数据进行子集化,您仍然可以获得所有级别(包括 "Ortho"、"OBGYN" 等...)。

您可以使用函数 droplevels:

来摆脱它们
newdata<-subset(olddata[ms$medical_specialty=='emergency'|olddata$medical_specialty=='pediatrics',])

newdata <- droplevels(newdata) ## THIS IS THE NEW ADDITION

plot(newdata)

这有帮助吗?