12

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」ごとに、列「Freq」、「Freq.1」、「Freq.2」の値の箱ひげ図を生成したいと思います。ただし、現在、1 つの 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に非常に慣れていないため、それが間違ったデータ形式、間違った構文、間違ったパッケージ、またはまったく別の問題であるかどうかはわかりません。

どんな助けでも大歓迎です!

4

1 に答える 1

29

プロットするには、データを再形成する必要があります。

まず、あなたのデータを読みます。いくつかの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)

たとえば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))

ここに画像の説明を入力

于 2013-02-09T06:31:21.713 に答える