0

我有一个data.frame,它的开头如下:

        gene            snp     pval   best_snp    best_pval
1  ENSG00000007341  rs2932538  5.6007 rs17030613   10.0542
2  ENSG00000064419 rs10488631  7.7461  rs4728142   24.6101
3  ENSG00000064419 rs12531711  7.7449  rs4728142   24.6101
4  ENSG00000064419 rs12537284  4.5544  rs4728142   24.6101
5  ENSG00000064666  rs3764650 12.3401  rs3752246    5.4001
6  ENSG00000072682 rs10479002  5.0141 rs12521868   21.1550

如图所示,在第 2-4 行中重复了相同的基因。对于重复的基因,我只想保留基因第一次出现的第一best_snp行的和best_pval值,所以第 2 行;对于第 3 行和第 4 行,我想删除and值,因为它与上面相同。best_snpbest_pval

如果一个基因没有重复,那么就让它保持原样。

请记住,表格比显示的要大得多,基因在随机位置重复。

4

2 回答 2

1

我假设table,你的意思是data.frame。如果是这样,如果z是你的data.frame:

z[match(unique(z$Best_SNP), z$Best_SNP),]

基于 Arun 的回答和指向您其他问题的链接。听起来您实际上想保留行但用某些东西(例如NA?)替换重复项,这可以通过以下方式完成:

z2 <- z
z2[duplicated(z2$Best_SNP),c("Best_SNP","Best_Pval")] <- NA
于 2013-07-02T09:49:41.340 回答
1

如果 df 是您的 data.frame:

library(plyr)
ddply(df,.(gene),function(x) {x[-1,c("best_snp","best_pval")] <- NA
return(x)})
于 2013-07-02T10:12:53.020 回答