如何根据geom.violin的条件将观察分成两组?

时间:2018-04-18 19:55:07

标签: r ggplot2 violin-plot

我有一个数据框,我想在小提琴图中绘制,其中观察结果分为两组:[va_AC == 1] or [va_AC > 1]

有没有办法在不向df添加新列的情况下为其分配组?

enter image description here

    ggplot(df) + 
      geom.violin(aes(x=[va_AC == 1] or [va_AC > 1], 
                      y=g_AD))

1 个答案:

答案 0 :(得分:4)

如果您不想更改初始数据集,可以在管道工作流程中执行此操作,这样就无法更改环境中的df对象。在这里,我使用case_when来选择拆分(虽然我确定很多其他方式)。

#create reproducible data

df <- data.frame(va_AC = c(rep(1,20), runif(80, 1.0001, 100)), 
                 g_AD = rnorm(100,25,5))

library(dplyr)
#combine in a pipe
df %>%
  #create new grouped variable
  mutate(split = case_when(
    va_AC == 1 ~ "A", 
    va_AC > 1 ~ "B"
  )) %>%
  #plot as before
  ggplot(.) +
  geom_violin(aes(x = split, y = g_AD))