0

数百万行の長さのデータファイルがあり、多くのグループからの情報が含まれています。以下は省略されたセクションです:

MARKER      GROUP1_A1   GROUP1_A2   GROUP1_FREQ GROUP1_N    GROUP2_A1   GROUP2_A2   GROUP2_FREQ GROUP2_N
rs10    A   C   0.055   1232    A   C   0.055   3221
rs1000  A   G   0.208   1232    A   G   0.208   3221
rs10000 G   C   0.134   1232    C   G   0.8624  3221
rs10001 C   A   0.229   1232    A   C   0.775   3221

頻度(FREQ)変数の加重平均(それ自体は簡単です)を作成したいのですが、この場合、一部の行が一致していません(行3と4)。文字が並んでいない場合は、そのマーカーの加重平均を計算する前に、2番目のグループの頻度を1で引く必要があります。

簡単なIFステートメントを設定したいのですが、そのようなタスクの構文がわかりません。

洞察や方向性は大歓迎です!

4

1 に答える 1

1

mydataというデータフレームでデータを読み取ったとします。次に、次の手順を実行します。

mydata$GROUP2_FREQ <- mydata$GROUP2_FREQ - (mydata$GROUP1_A1 != mydata$GROUP2_A1)

これは、RがTRUE値を1として扱い、FALSE値を0として扱うために機能します。

編集:代わりに次のことを試してください:

mydata$GROUP2_FREQ <- abs( (as.character(mydata$GROUP1_A1) != 
                            as.character(mydata$GROUP2_A1)) -                   
                          as.numeric(mydata$GROUP2_FREQ) )
于 2012-07-27T19:48:28.457 に答える