作者sinclairJ (Jun)
看板R_Language
标题[问题] 多栏资料回圈处理
时间Sun May 3 20:01:59 2015
各位先进 又来请教问题了 谢谢大家指导
先上资料档
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://webptt.com/cn.aspx?n=bbs/R_Language/M.1430654523.A.539.html
※ 编辑: sinclairJ (111.184.161.128), 05/03/2015 20:03:54
1F:→ celestialgod: 我认为table这问题 我上次的code可以解决 05/03 20:57
2F:→ celestialgod: 看起来你并没有把他学起来 05/03 20:57
3F:→ celestialgod: 我的问题,不该用太难的方式去解决问题。 05/03 20:58
4F:→ sinclairJ: 对不起cel大 其实我是看不太懂你的code... 05/04 06:27
5F:→ sinclairJ: 我只会用套件,但对於资料预处理或流程控制尚还在学习.. 05/04 06:28
6F:→ celestialgod: 推荐你用plyr的colwise处理data.frame的逐行作业 05/04 12:18
7F:→ celestialgod: colwise(function(x){tmp = table(x);n0 = tmp["0"] 05/04 12:19
8F:→ celestialgod: n1 = tmp["1"];n2 = tmp["2"];n = n0 + n1 + n2 05/04 12:19
9F:→ celestialgod: p=((2*n0)+n1)/(2*n);maf=pmin(p,1-p)})(temp) 05/04 12:19
10F:→ sinclairJ: 晚点试试看 cel大谢谢你 05/04 14:43