ggplot:多列值的Boxplot

Kap*_*ppa 7 r ggplot2

以下是我作为csv文件导入的数据类型:

RPID    mm  ID  Time    Freq    Freq.1  Freq.2
RPO483  1   B6AC    5   23301   30512   
RPO483  1   B6AC    25  19      17  
RPO244  1   B6C     5   14889   20461   
RPO244  1   B6C     25  81      86  
RPO876  1   G3G3A   5   106760  59950   103745
RPO876  1   G3G3A   25  4578    38119   37201
RPO876  7   F3G3A   5   205803  148469  173580
RPO876  7   F3G3A   25  28648   30321   26454
RPO939  7   F3E324A 5   242285      
RPO939  7   F3E324A 25  42837       
RPO934  7   F3E325A 5   242001  129272  112371
RPO934  7   F3E325A 25  73057   58685   66582
Run Code Online (Sandbox Code Playgroud)

对于每个"ID",我想为"Freq","Freq.1"和"Freq.2"列中的值生成一个箱线图.但是,目前我只能成功绘制一个Y值 - 例如:

dataset <- read.csv("~/R/dataset.csv")
library(ggplot2)
p <- ggplot(dataset) 
p + geom_boxplot(aes(x=ID, y=Freq, color=mm))
Run Code Online (Sandbox Code Playgroud)

我尝试了类似y = c(Freq,Freq.1,Freq.2)的东西,但结果如下:

Error: Aesthetics must either be length one, or the same length as the dataProblems:ID
Run Code Online (Sandbox Code Playgroud)

我确信有一个简单的解决方案,但由于我是R的新手,我不知道这是一个错误的数据格式,错误的语法,错误的包或其他完全的问题.

任何帮助将不胜感激 !

ags*_*udy 18

您需要重新整形数据才能进行绘图.

首先,我读了你的数据.请注意,您有一些NA值.

dat <- read.table(text = '
RPID    mm  ID  Time    Freq    Freq.1  Freq.2
RPO483  1   B6AC    5   23301   30512   
RPO483  1   B6AC    25  19      17  
RPO244  1   B6C     5   14889   20461   
RPO244  1   B6C     25  81      86  
RPO876  1   G3G3A   5   106760  59950   103745
RPO876  1   G3G3A   25  4578    38119   37201
RPO876  7   F3G3A   5   205803  148469  173580
RPO876  7   F3G3A   25  28648   30321   26454
RPO939  7   F3E324A 5   242285      
RPO939  7   F3E324A 25  42837       
RPO934  7   F3E325A 5   242001  129272  112371
RPO934  7   F3E325A 25  73057   58685   66582',head=T, fill=T)
Run Code Online (Sandbox Code Playgroud)

reshape2例如

library(reshape2)
dat.m <- melt(dat,id.vars='ID', measure.vars=c('Freq','Freq.1','Freq.2'))
library(ggplot2)
p <- ggplot(dat.m) +
      geom_boxplot(aes(x=ID, y=value, color=variable))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述