You're the best! Thanks! :)
• 0 views
•
link
Hello,
I have a data set like this "AA","AB","BB" and I need calculate minor allele freq and keep only these which are bigger than 5%. Have you ever done something like this?
SNP <- data.frame(SNP = c("AA","AB","BB","AA","BB","BB","AB","AA"), SNP1 = c("AA","AA","AA","BB","AA","AB","BB","AA"), SNP2 = c("AB","AB","AB","BB","AA","AA","AA","BB"))
You can use HardyWeinberg::maf to calculate MAF from a vector of frequencies. You can create this vector of HOM/HET/HOM-ALT frequencies using a simple table:
library(HardyWeinberg)
SNPs <- data.frame(SNP = c("AA","AB","BB","AA","BB","BB","AB","AA"), SNP1 = c("AA","AA","AA","BB","AA","AB","BB","AA"), SNP2 = c("AB","AB","AB","BB","AA","AA","AA","BB"))
table(sort(SNPs$SNP1))
AA AB BB
5 1 2
maf(as.vector(table(sort(SNPs$SNP1))))
[1] 0.3125 # which is the same as 1-((nAA + 0.5 * nAB)/(nAA + nAB + nBB))
Log in to answer this question.
Your code won't work. You'll need to quote the allele strings
Yeah, sorry :)