ggplot: Boxplot значений нескольких столбцов

вот тип данных, которые я импортирую как 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

для каждого " ID "я хотел бы создать boxplot для значений в Столбцах" 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))

Я пробовал что-то вроде y=c(Freq,Freq.1, Freq.2), но это приводит к следующему:

Error: Aesthetics must either be length one, or the same length as the dataProblems:ID

Я уверен, что есть простое решение для этого, но поскольку я очень новичок в R, я не могу рассказывать если это проблема неправильного формата данных, неправильного синтаксиса, неправильного пакета или чего-то еще.

любая помощь была бы очень признательна !

1 ответов


вам нужно изменить данные для построения графика.

сначала я прочитал ваши данные. Обратите внимание, что у вас есть некоторые на значения.

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)

используя

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))

enter image description here