0

複数のグループを含む非常に大きなデータ セットがあります。それらはすべて同じ情報を含んでいますが、時折一貫性がなく、この情報の順序が間違っています。以下の例では、Group1_A1Group2_A1列が一致していません (行 3 と 4 が反転しています)。したがって、これらの行の残りの情報は比較できません。これを修正するには、の BETA にGROUP1_BETA-1 を掛ける必要があります (再度、グループ間の A1 列が一致しない場合、一致する場合は Beta をそのままにしておく必要があります)。

MARKER  GROUP1_A1  GROUP1_A2  GROUP1_BETA  GROUP1_SE  GROUP2_A1  GROUP2_A2  GROUP2_BETA GROUP2_SE
rs10        A         C         -0.055      0.003        A         C           0.056      0.200
rs1000      A         G          0.208      0.100        A         G           0.208      0.001
rs10000     G         C         -0.134      0.009        C         G          -0.8624     0.010
rs10001     C         A          0.229      0.012        A         C           0.775      0.003

0 から 1 の間の周波数を扱うときは、以下を使用していました。

data$GROUP1_oppositeFrequency <- abs( (as.character(data$Group2_A1) != 
                            as.character(data$Group1_A1)) -                   
                          as.numeric(data$Group1_Frequency) )

ただし、ベータ値は負になる可能性があるため、これは機能しません。誰かが私を正しい方向に向けることができますか?

再現可能なデータ:

data <- textConnection("SNP,GROUP1_A1,GROUP1_A2,GROUP1_Beta,GROUP1_SE,GROUP2_A1,GROUP2_A2,GROUP2_Beta,GROUP2_SE,GROUP3_A1,GROUP3_A2,GROUP3_Beta,GROUP3_SE
rs1050,C,T,0.0462,0.0035,T,C,0.007,0.0039,C,T,-0.007,0.009
rs1073,A,G,-0.0209,0.0035,A,G,0.0004,0.0031,A,G,-0.009,0.013
rs1075,C,T,-0.001,0.0039,T,C,-0.0013,0.0028,C,T,0.004,0.011
rs1085,C,G,-0.0001,0.0068,C,G,-0.0027,0.0032,C,G,-0.049,0.026
rs1127,C,T,0.0015,0.0044,T,C,0.0002,0.0029,C,T,-0.017,0.009
rs1312,A,G,-0.0014,0.0039,A,G,-0.0025,0.0029,A,G,0,0.01")
test_data <- read.csv(data, header = TRUE, sep = ",")
4

1 に答える 1

1

group1_a1唯一の可能性が「反転」であると仮定すると、 の値が の値と同じかどうかを確認するだけで済みますgroup2_a1

mydata$group1_beta <- mydata$group1_beta * (-1)^((mydata$group1_a1 == mydata$group2_a1) + 1)

更新:これが機能することを示す例です(少なくとも、私が意図したとおりに機能することを示しています:-))。

 Rgames> mydat<-data.frame(A=c('a','b','d','c'),B=c('a','b','c','d'),one=1:4,two=1:4)
Rgames> mydat
  A B one two
1 a a   1   1
2 b b   2   2
3 d c   3   3
4 c d   4   4
Rgames> mydat$two<-mydat$two*(-1)^((mydat$A==mydat$B)+1)
Rgames> mydat
  A B one two
1 a a   1   1
2 b b   2   2
3 d c   3  -3
4 c d   4  -4
于 2012-08-29T15:32:08.447 に答える