2015-04-21 6 views
1

Я хотел бы исключить все строки в df, когда у него есть СПЕЦИФИЧЕСКИЕ УСТРОЙСТВА (AA, AB, BB). Мои реальные данные имеют более 20 тыс. Строк и более 2 тыс. Столбцов! Следуйте репрезентативный пример ввода:Исключить все строки с JUST конкретными шаблонами в R

df <- "chr position sample21s sample23s sample22s 
    chr2 150  AB   BB  AA  
    chr4 250  A   AA  BB 
    chr5 350  AB   B  BB 
    chr7 550  AA   AA  AA 
    chr8 650  BB   BB  AB" 
df <- read.table(text=df, header=T) 

Ожидаемый результат:

chr position sample21s sample23s sample22s 
chr4 250  A   AA  BB 
chr5 350  AB   B  BB 

Любые идеи?

+0

могли бы вы предоставить воспроизводимый пример: http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+0

Готово. Спасибо! – user2120870

+0

Извините, вы хотите * исключить * AA, AB и BB? В ожидаемом выходе эти строки все еще присутствуют. – verybadatthis

ответ

1

Вот одна альтернатива ...

> ind <- apply(df[, grepl("^sample", names(df))], 1, 
       function(x) sum(x %in% c("AA", "AB", "BB"))!=3) 

> df[ind, ] 
    chr position sample21s sample23s sample22s 
2 chr4  250   A  AA  BB 
3 chr5  350  AB   B  BB