2016-08-06 5 views
1

以下のコードを使用して、複数のパネルを含む格子xyplotを作成しようとしています。問題は、すべてのパネルにすべての中央線を追加していることです(つまり、アブラインはSubjectでグループ化されていません)。サブジェクトごとのメジアンラインをサブセット化する方法はありますか?マルチパネルプロットのラティスパネル.abline

以下は、PKPDdatasetsパッケージのTheophデータセットを使用した再現可能な例です。

# devtools::install_github("dpastoor/PKPDdatasets") 
library(PKPDdatasets) 
library(lattice) 
library(latticeExtra) 
library(dplyr) 

Theoph_Data <- Theoph 

Theoph_Data1 <- Theoph_Data %>% group_by(Subject) %>% mutate(Median= median(Time)) 

print(Theoph_Data1) 

Theoph_PK <- xyplot(conc ~ Time| Subject, data=Theoph_Data1, 
        panel = function(x,y,...) { 
        panel.xyplot(x,y,...) 
        panel.abline(v=Theoph_Data1$Median) 
        }) 
Theoph_PK 
+1

は、スタックオーバーフローへようこそ! [この質問を再現可能にする](http://www.stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)を試してください。あなたは質の高い回答を得る可能性が非常に高いです。 – shayaa

+0

ありがとう、Shayaa。私はちょうど例で私の質問を更新しました。あなたの助けに大変感謝します。 –

+0

以下の答えに従って解決できました:http://stackoverflow.com/questions/21175945/adding-different-vertical-lines-for-each-panel-in-xyplot-using-lattice-in-r –

答えて

0

あなたの例では、最高ではないですが、すべての個人が同じ期間の中央値を持っているので、基本的な考え方はこれです:

Theoph_Data <- Theoph 
xyplot(conc ~ Time| Subject, data=Theoph_Data1, 
    panel = function(x,y,subscripts,...) { 
     panel.xyplot(x,y, subscripts=subscripts,...) 
     panel.abline(v=median(Theoph_Data1$Time[subscripts])) 
    } 
) 

あなたのパネル機能でsubscripts=パラメータを要求することができます。これにより、各パネルにプロットされた観測値のインデックスが得られます。それらのサブスクリプトを使用して元のデータをサブセット化することができます。ここでは関数内の中央値を計算します(単一の値を持つ単一の線をプロットすることを確実にするため)。

enter image description here

+0

素晴らしい、ありがとうMr.Flick! –

関連する問題