[R] subset data.frame with value != in all columns

Sundar Dorai-Raj sundar.dorai-raj at pdf.com
Thu Feb 3 21:09:17 CET 2005



Tim Howard wrote:
> I am trying to extract rows from a data.frame based on the
> presence/absence of a single value in any column.  I've figured out how
> to do get the positive matches, but the remainder (rows without this
> value) eludes me.  Mining the help pages and archives brought me,
> frustratingly,  very close, as you'll see below. 
> 
> My goal: two data frames, one with -99 in at least one column in each
> row, one with no occurrences of -99. I want to preserve rownames in
> each.
> 
> My questions: 
> Is there a cleaner way to extract all rows containing a specified
> value?
> How can I extract all rows that don't have this value in any col?
> 
> #create dummy dataset
> x <- data.frame(
> c1=c(-99,-99,-99,4:10),
> c2=1:10,
> c3=c(1:3,-99,5:10),
> c4=c(10:1),
> c5=c(1:9,-99))
> 
<snip>

Tim,

How about using ?apply. Provided all your columns are numeric, you can do:

drop <- apply(x, 1, function(row) all(row != -99))
x[drop, ]

--sundar




More information about the R-help mailing list