看板 R_Language 關於我們 聯絡資訊
各位先進 又來請教問題了 謝謝大家指導 先上資料檔 https://www.dropbox.com/s/s0rmp73n08qbyfl/test0430.csv?dl=0 第一部分 #註:資料檔中的NA值可先忽略 #以下語法皆只能處理單欄資料 ###讀檔並轉成類別型資料### temp=read.csv("C:\\Users\\Win\\Desktop\\test0430.csv",header=T) for(i in 1:ncol(temp)) temp[,i]=as.character(temp[,i]) ###MAF計算### table.rs1=table(temp[,1]) #可知rs1的 0有116個,1有31個,2有2個 #計算n n0=116;n1=31;n2=2; n=n0+n1+n2 #計算minor allele frequencies(MAF) p=((2*n0)+n1)/(2*n);q=1-p maf=pmin(p,q) 問題1:我該如何把每欄的rs用迴圈的方式計算完 問題2:全部rs計算完畢後,若該rs計算出來的maf<0.05,就存到另一個csv檔, 其rs下的資料也要保留,因為要繼續做後續的分析,所以新的csv檔維度為149*欄數 第二部分 #註:資料檔中的NA值可先忽略 #以下語法皆只能處理單欄資料 ###讀檔並轉成類別型資料### temp=read.csv("C:\\Users\\Win\\Desktop\\test0430.csv",header=T) for(i in 1:ncol(temp)) temp[,i]=as.character(temp[,i]) ###Likelihood ratio test for Hardy Weinberg equilibrium### #以rs1為例 obs=cbind(n0=n0,n1=n1,n2=n2) exp=(cbind(p*p,2*p*q,q*q))*n chisq=(obs-exp) chisq.ratio=(chisq*chisq)/exp hwe.chisq=apply(chisq.ratio,1,sum) hwe.chisq.p=1-pchisq(hwe.chisq,df=1) 問題3:我該如何把每欄的rs用迴圈的方式計算完 問題4:全部rs計算完畢後,若該rs計算出來的hwe.chisq.p<0.05,就存到另一個csv檔, 其rs下的資料也要保留,因為要繼續做後續的分析,所以新的csv檔維度為149*欄數 以上是我的問題,有勞各位先進前輩指導,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.184.161.128 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1430654523.A.539.html ※ 編輯: sinclairJ (111.184.161.128), 05/03/2015 20:03:54
celestialgod: 我認為table這問題 我上次的code可以解決 05/03 20:57
celestialgod: 看起來你並沒有把他學起來 05/03 20:57
celestialgod: 我的問題,不該用太難的方式去解決問題。 05/03 20:58
sinclairJ: 對不起cel大 其實我是看不太懂你的code... 05/04 06:27
sinclairJ: 我只會用套件,但對於資料預處理或流程控制尚還在學習.. 05/04 06:28
celestialgod: 推薦你用plyr的colwise處理data.frame的逐行作業 05/04 12:18
celestialgod: colwise(function(x){tmp = table(x);n0 = tmp["0"] 05/04 12:19
celestialgod: n1 = tmp["1"];n2 = tmp["2"];n = n0 + n1 + n2 05/04 12:19
celestialgod: p=((2*n0)+n1)/(2*n);maf=pmin(p,1-p)})(temp) 05/04 12:19
sinclairJ: 晚點試試看 cel大謝謝你 05/04 14:43