【发布时间】:2019-08-09 09:23:06
【问题描述】:
我有两个具有多个级别的分类变量。每个变量内的水平有不同数量的观察,例如:
var1 <- c("Left", "Right", NA, "Left", "Right", "Right", "Right", "Left", "Left", "Right", "Left", "Left","Left", "Right", "Left", "Right", "Right", "Right", "Left", "Left", "Right", NA, "Left", "Left","Left", "Right", NA, "Left", "Right", "Right", "Right", "Left", "Left", "Right", "Left", "Left","Left", "Right", "Left", "Right", "Right", "Right", "Left", "Left", "Right", NA, "Left", "Left")
var2 <- c("Higher", "Lower", NA, "Slightly higher", "Slightly higher", "Slightly higher", "Lower", "Slightly higher", "Higher", "Higher", "Higher", "Slightly higher","Higher", "Lower", "Slightly higher", "Slightly higher", "Slightly higher", "Lower", "Slightly higher", "Higher", "Higher", "Higher", NA, "Slightly lower","Higher", "Lower", NA, "Slightly higher", "Slightly higher", "Slightly higher", "Lower", "Slightly higher", "Higher", "Higher", "Higher", "Slightly higher","Higher", "Lower", "Slightly higher", "Slightly higher", "Slightly higher", "Lower", "Slightly lower", "Higher", "Higher", "Higher", NA, "Slightly lower")
df <- as.data.frame(cbind(var1, var2))
我想创建一个图表来绘制选择每个级别 var2 的 var1 的每个类别的比例。因此,例如在这里,选择“更高”答案的“左”组的比例(选择“更高”的左的人数除以“左”的总人数),旁边是“右”的选择“更高”答案的比例(选择较高的正确人数除以正确人数)依次为每个答案。
我已经编写了下面的 ggplot 代码,它为我提供了一个并排显示每个答案选项的每组计数的图表,但它没有给我比例,因此左右两组不具有可比性(因为每个组的人数不同。如果可能的话,我还想为左右每个组指定特定的颜色......
Plot<-ggplot(df, aes(var2))+
geom_bar( aes(fill=var1),position = "dodge")+
labs(x="Left or Right",y="Count")+
scale_y_continuous()) +
scale_fill_discrete(name = "Answer:")+ theme_classic()+ theme(legend.position="top")
我对这段代码的第二个问题是我得到了代码中 NA 值的因子水平。我知道我可以在我的 ggplot 代码中在 df 上使用 na.omit,它适用于这个小数据框,但我的真实数据集有多个列,如果你运行 na.omit,它会删除所有包含 NA 的列中的所有行,其中是数百行数据,我不想这样做!有没有办法从 ggplot 代码中的数据框中的特定变量中删除 NA?
如果有人有任何想法,那就太好了。提前非常感谢您!
【问题讨论】: