2012-07-27 23 views
0

中加權平均的語句,我有一個長達數百萬行的數據文件,其中包含來自多個組的信息。下面是一個簡化的部分:如果在R

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)。如果字母不對齊,那麼在計算該標記的加權平均值之前,需要將第二組的頻率減1。

我想建立一個簡單的IF語句,但我不確定這樣的任務的語法。

任何洞察力或方向感謝!

回答

1

假設您已經在名爲mydata的數據框中讀取了您的數據。然後執行以下操作:

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

它的工作原理,因爲[R對待真正的價值爲1和FALSE值0

編輯:儘量不要使用以下:

mydata$GROUP2_FREQ <- abs((as.character(mydata$GROUP1_A1) != 
          as.character(mydata$GROUP2_A1)) -     
          as.numeric(mydata$GROUP2_FREQ)) 
+0

答案編輯;我第一次讀它時誤解了你的問題。 – Edward 2012-07-27 19:53:51

+0

嗨,愛德華,謝謝,我不知道這是我正在尋找的。它給了我一個錯誤:「$ < - 。data.frame'('* tmp *',」GROUP2_FREQ「,value = numeric(0))中的錯誤: 替換有0行,數據有5」我不能確定,但​​頻率應該從1中減去,只有組間A1和A2不匹配。那有意義嗎? – mfk534 2012-07-27 20:20:43

+0

它的確如此。我看到你想從1減去頻率,而不是相反(我從你的問題中想到的)。所以我的答案應該改變,以反映...至於你的錯誤,你有什麼辦法可以給一個小的可重複樣品檢查? – Edward 2012-07-27 20:29:25