我有一个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值,因为它是基因first出现的first行,所以是第2行;对于第3和第4行,我想删除best_snp和best_pval值,因为它与上面的相同。
如果一个基因不被重复,那就保持原样吧。
请记住,这个表比显示的要大得多,而且基因在随机的地方重复。
发布于 2013-07-02 10:12:53
如果df是您的data.frame:
library(plyr)
ddply(df,.(gene),function(x) {x[-1,c("best_snp","best_pval")] <- NA
return(x)})发布于 2013-07-02 09:49:41
我猜是桌子,你是说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")] <- NAhttps://stackoverflow.com/questions/17422345
复制相似问题