Re: [问题] 多栏资料循环处理

楼主: Wush978 (拒看低质媒体)   2015-05-03 20:15:48
※ 引述《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*栏数
: 以上是我的问题,有劳各位先进前辈指导,谢谢
以上都是类似的问题了
作者: sinclairJ (KEEP MOVING FORWARD)   2015-05-04 06:35:00
谢Wush大 晚点来试试看 ~

Links booklink

Contact Us: admin [ a t ] ucptt.com