看板 R_Language 關於我們 聯絡資訊
※ 引述《sinclairJ (Jun)》之銘言: : 各位先進 又來請教問題了 謝謝大家指導 : 先上資料檔 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用迴圈的方式計算完 for(i in 1:ncol(temp)) { table.rs <- table(temp[,i]) n0 = table.rs["0"] # ... n = nrow(temp) # p, q, maf 都可以算出來了 } : 問題2:全部rs計算完畢後,若該rs計算出來的maf<0.05,就存到另一個csv檔, : 其rs下的資料也要保留,因為要繼續做後續的分析,所以新的csv檔維度為149*欄數 存入csv的指令是write.csv 或write.table 你只要利用 if (maf < 0.05) { # 寫入指令 } 就可以了 : 第二部分 : #註:資料檔中的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), 來自: 118.165.189.134 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1430655350.A.999.html
sinclairJ: 謝Wush大 晚點來試試看 ~ 05/04 06:35