※ 引述《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*欄數
: 以上是我的問題,有勞各位先進前輩指導,謝謝
以上都是類似的問題了