我的数据框看起来像:
mi chr gen.pos phys.pos sample1 sample2 sample3 sample4 sample5
snp1 Ch09 NA 12712760 CC CC TT TT TT
snp2 Ch08 NA 8218379 AA AG -- AA AA
snp3 Ch02 NA 6594215 GG HH GG GG GG
snp4 Ch20 NA 42347146 CC CC CC CC CC
snp5 Ch11 NA 1808563 GG -- GG GG GG
snp6 Ch14 NA 34284723 CC CC CC TT TT
snp7 Ch13 NA 21532194 AA GG AA GG GG
snp8 Ch13 NA 21532040 CC AA CC AA AA
snp9 Ch11 NA 38423068 TT CT TT CC CC
我期待最终结果:
mi chr gen.pos phys.pos sample1 sample2 sample3 sample4 sample5
snp1 Ch09 NA 12712760 CC CC TT TT TT
snp3 Ch02 NA 6594215 GG HH GG GG GG
snp6 Ch14 NA 34284723 CC CC CC TT TT
snp7 Ch13 NA 21532194 AA GG AA GG GG
snp8 Ch13 NA 21532040 CC AA CC AA AA
snp9 Ch11 NA 38423068 TT CT TT CC CC
程序:保留包含与df[,-(1:4)]
列表匹配的数据框Un <- c("AA","CC","GG","TT","HH")
的任意两个唯一值的行
感谢您的帮助。
答案 0 :(得分:3)
为这些规范创建索引变量
apply( df[-(1:4)], 1, function(x) length( unique( x[ x %in% Un])) ) >=2
[1] TRUE FALSE TRUE FALSE FALSE TRUE TRUE TRUE TRUE
然后用它来索引df的行。
dat[idx, ]
mi chr gen.pos phys.pos sample1 sample2 sample3 sample4 sample5
1 snp1 Ch09 NA 12712760 CC CC TT TT TT
3 snp3 Ch02 NA 6594215 GG HH GG GG GG
6 snp6 Ch14 NA 34284723 CC CC CC TT TT
7 snp7 Ch13 NA 21532194 AA GG AA GG GG
8 snp8 Ch13 NA 21532040 CC AA CC AA AA
9 snp9 Ch11 NA 38423068 TT CT TT CC CC