This is a test version of Biostars. For the public version, visit https://www.biostars.org.
MAF in R

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"))
minor-allele-freq r maf

Your code won't work. You'll need to quote the allele strings

1 answer

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))

Please accept my answer to mark the post as solved:

upvote_bookmark_accept

Log in to answer this question.