我正在做基因映射的snp,在用50 kb的snp映射后,我有以下文件。例如(snp,gene,pvalue)
1. ars113 ap1 0.1
2. ars113 ap1 0.1
3. ars113 ap1 0.2
4. ars113 ap1 0.2
5. ars113 ap2 0.1
6. ars113 ap2 0.2
7. ars114 ap6 0.1
8. ars114 ap6 0.3
我如何只为每个基因选择p值最低的标记?整个过程还有其他简单的方法。
答案 0 :(得分:0)
这应该这样做。
aggregate(pvalue ~ gene + snp, df, min)
或者如果你想要更宽的格式:
tapply(df$pvalue, INDEX=list(df$gene, df$snp), min)
答案 1 :(得分:0)
将文件作为数据框读入,然后按基因对数据帧进行分组并过滤每个基因的最小p值。
library(dplyr)
library(readr)
df <- read_delim("filename.txt", delim = " ", col_names = c("snp", "gene", "pvalue"))
df %>% group_by(gene) %>% filter(pvalue == min(pvalue))