2

私は自分の質問に対する答えを探してスタックを検索しました。これは私の質問に近づいていますが、グラフを修正するためにコードを変更することに失敗しました。

長い形式で再形成された、次のようなデータがあります。

ID          Var1      GenePosition   ContinuousOutcomeVar
1           control      X20068492 0.092813611
2           control      X20068492 0.001746708
3           case         X20068492 0.069251157
4           case         X20068492 0.003639304

それぞれIDにポジションごとに1つの値ContinuousOutcomeVarがあり、86のポジションと10のIDがあります。x軸に位置、y軸に連続結果変数を含む折れ線グラフをプロットしたいと思います。ケースグループとコントロールグループの2つのグループが必要なので、位置ごとに2つのドットが必要です。1つはケースの平均値で、もう1つはコントロールの平均値です。次に、ケースを接続する線と、コントロールを接続する線が必要です。これは簡単なことですが、私はRを初めて使用します。8時間作業を続けているので、正しく理解できません。以下は私が持っているものです。私は本当にいくつかの洞察に感謝します。これがスタックのどこかに存在する場合は、本当にお詫びします...正直に見て、たくさんのコードを変更しようとしましたが、それでも正しく理解できていません。

私のコード:このコードは、各位置にあるすべてのIDのすべての値をプロットし、2つのグループにそれらを接続します。それは私に位置ごとの10の値すべての平均で黒い点を与えます(私は思う):

lineplot <- ggplot(data=seq.long, aes(x=Position, y=PMethyl, 
    group=CACO, colour=CACO)) +
    stat_summary (fun.y=mean, geom="point", aes(group=1), color="black") +      
    geom_line() + geom_point()

Rに10ポイントすべてをプロットしないようにすることはできません。位置ごとに2つの平均(ケース/コントロールグループごとに1つ)があり、ケースとコントロールの値はそれぞれx軸を横切る線で接続されています。

4

1 に答える 1

3

まず、元のサンプルデータを調整して、複数の一意のを含むようにしますGenePosition

dput(seq.long)
structure(list(ID = 1:8, Var1 = structure(c(2L, 2L, 1L, 1L, 2L, 
2L, 1L, 1L), .Label = c("case", "control"), class = "factor"), 
    GenePosition = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L
    ), .Label = c("X20068492", "X20068493"), class = "factor"), 
    ContinuousOutcomeVar = c(0.092813611, 0.001746708, 0.069251157, 
    0.003639304, 0.112813611, 0.002746708, 0.089251157, 0.004639304
    )), .Names = c("ID", "Var1", "GenePosition", "ContinuousOutcomeVar"
), class = "data.frame", row.names = c(NA, -8L))

GenePositionそれぞれと組み合わせに対して1つの値を表すだけの場合は、Var1プロットする前に平均値を計算する方が簡単です。ddply()これは、ライブラリの関数を使用して実現できますplyr

library(plyr)    
seq.long.sum<-ddply(seq.long,.(Var1,GenePosition),
       summarize, value = mean(ContinuousOutcomeVar))
seq.long.sum
     Var1 GenePosition      value
1    case    X20068492 0.03644523
2    case    X20068493 0.04694523
3 control    X20068492 0.04728016
4 control    X20068493 0.05778016

この新しいデータフレームを使用するxと、y値を指定するだけで済みます。で使用し、各グループの色が異なり、線が接続されていることを確認するVar1必要がありcolour=ます。group=

ggplot(seq.long.sum,aes(x=GenePosition,y=value,colour=Var1,group=Var1))+
   geom_point()+geom_line()

ここに画像の説明を入力してください

于 2013-03-04T07:53:02.777 に答える