2016-11-01 15 views
0

食事を食べてから血清マーカーが時間とともにどのように変化するかを調べる実験を設計しました。私は72の観測と23oの変数からなるデータフレームを持っています。これはBreakfastMと呼ばれます。複数のボックスプロットのためにrでループを作成

血清マーカーである229の変数と、時点である1つの変数がある。観察は異なるサンプルである

Iamは、血清マーカー(すなわちコレステロール)がどのように時間点とともに変化するかのデータの傾向を探している。私はうまくこれは私が

boxplot((BreakfastM$Variable~BreakfastM$Timepoint)) 

を使用したコードである

を時点に関連して、特定の血清マーカーの推移を示した箱ひげ図を作成したに対するデータフレーム内のすべての変数をテストする簡単な方法はありますRにループコードを書き込むことによってタイムポイント?

+1

それはあなたが求めているものはほとんど不明だ - あなたは229箱ひげ図を作成するループを探していますか? – Craig

+0

返信いただきありがとうございます。 9つの時点があり、変数 "コレステロール"について上記のコマンドを実行すると、9つのボックスプロット(各時点ごとに1つ)を持つ1つのグラフが生成されます。変数を代入して229のグラフを作成して、データを素早く調べたいと思います。これが理にかなってほしい。 – NLM09

答えて

2

プロットする場合は、tidyr(およびdplyr)のロングフォームに変換し、ggplot2でプロットするのがおそらく最善の出発点です。

変数数が少ない場合は、facet_wrapを使用して、小計数でボックスプロットを分割することができます。再現性のあるデータを提供していないため、mtcarsデータを使用しています。時間の代わりに「ギア」を使用し、比較する数値に限定します。 selectgatherggplot

mtcars %>% 
    select(gear, mpg, disp:qsec) %>% 
    gather(Measure, Value, -gear) %>% 
    ggplot(aes(x = factor(gear) 
      , y = Value)) + 
    geom_boxplot() + 
    facet_wrap(~Measure 
      , scales = "free_y") 

enter image description here

に渡す前に、長い形式に変換し、その後、私が使用したい列を選んでいる、229個の変数で、それが読めるプロットであることを行っていません。代わりに、をggplusから見て、複数のページにわたってファセットを広げることができます。ここでは、私はあなたのニーズに応じて、ビューアで表示するか「保存」するかのどちらかで「ページ」ごとに1つを配置するために使用しています。

まず、(無面取り付き)ベースプロット保存します、そして、

basePlot <- 
    mtcars %>% 
    select(gear, mpg, disp:qsec) %>% 
    gather(Measure, Value, -gear) %>% 
    ggplot(aes(x = factor(gear) 
      , y = Value)) + 
    geom_boxplot() 

facet_multipleへの引数としてそれを使用する:、

facet_multiple(basePlot, "Measure" 
       , nrow = 1 
       , ncol = 1 
       , scales = "free_y") 

は、上記と同様のパネルを生成しますが、と1ページに1つずつ(nrowncolを変更すると、1ページに表示されるファセット数が増える可能性があります)。

+0

** Rフレームにループコードを書くことで、データフレーム内のすべての変数をタイムポイントと比較して素早くテストできますか?**「どこからコードをdplyrとggplotに変換するのですか? – rawr

+0

@rawr:「クイック・ウェイ」から - これは、必要な変数の数に柔軟性を持たせるためのコードの量が大幅に少なくなります。それは望ましい出力を生成しますが、確かに1つのアプローチです。あなたがそれなしでより速い方法があると思えば、私はそれを見ることをうれしく思います。私は 'dplyr'や' ggplot'がすべてのツールとして正しいとは思っていないし、ここで間違っているかもしれない。しかし、これは私が最近遊んだおもちゃで、役に立つかもしれないと思った。 –

+0

大丈夫ですが、 "すべての変数をテストします..."という質問はプロットに関するものではありません – rawr

1

ループを使用して、作業ディレクトリ内のイメージファイルに多くのプロットを書き込むこともできます。 3つの因子レベルによって10測定された変数、各分割を代表する10列の行列を作ってみましょう:

data <- matrix(rnorm(150), nrow=15) 
grps <- factor(c(rep("group1", 5), rep("group2", 5), rep("group3", 5))) 

ループは、これはあなたの作業ディレクトリに10 png秒を置くなどvar_1.pngと呼ばれるファイル、var_2.png、各箱ひげ図を書き込みます。

for (i in 1:ncol(data)) { 
    png(file = paste("var_", i, ".png", sep="")) 
    boxplot(data[, i] ~ grps) 
    dev.off() 
} 

ファイルは非常に小さく、簡単なイメージビューアですばやくフリックすることができます。

enter image description here

関連する問題