[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