2013-02-09 13 views
5

値Iは、CSVファイルとしてインポートしていたデータの種類である:各「ID」についてはggplot:複数列の箱ひげ図は、ここで

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 

、私は内の値の箱ひげ図を生成したいのですが「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に非常に新しいですと、それは間違ったデータ形式の問題であれば、私は、間違った構文を を伝えることはできません、間違ったパッケージか全く他の何か。

ご協力いただければ幸いです!

答えて

14

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

最初に私はあなたのデータを読んだ。 NAという値があることに注意してください。例えば

reshape2を使用して
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

+0

ありがとうございました。これは非常に役に立ちます。私の目的(たぶん言葉が貧弱)は、すべての値(Freq、Freq.1、Freq.2)を1つのボックスにまとめることでした。私は今あなたのコードの "色=変数"部分を削除することでこれが達成できることを見ています。 – Kappa

関連する問題