[R] R help..subsetting data frame that meeting multiple criteria

arun
Sat, 24 Nov 2012 02:32:11 -0000

Hi David,
Tried the solution on a slightly different data:
dat <- read.table(text="
value class percent
15526 36 4.6875
15527 62 85.9375
15527 82 32.4564
15528 36 70.3125
15528 62 9.375
15528 82 74.6875
15529 72 50.0000
15530 72 50.0000
", header = TRUE)
dat.a <- dat[ dat[["class"]] %in% dat[ dat[["percent"]]
>70, "class"] , ]
?row.names(dat.a) <- unlist(tapply(dat.a$class, dat.a$class, function(x)
paste0(x, letters[1:length(x)])))
?dat.a
#??? value class percent
#36a 15526??? 36? 4.6875
#36b 15527??? 62 85.9375
#62a 15527??? 82 32.4564
#62b 15528??? 36 70.3125
#82a 15528??? 62? 9.3750
#82b 15528??? 82 74.6875


A.K.




----- Original Message -----
From: David Winsemius <dwinsemius at comcast.net>
To: prasmas <prasad4rr at gmail.com>
Cc: r-help at r-project.org
Sent: Friday, November 23, 2012 7:40 PM
Subject: Re: [R] R help..subsetting data frame that meeting multiple criteria


On Nov 23, 2012, at 1:14 PM, prasmas wrote:

> Hi,
> I am new to R.? I am trying to regroup data frame using multiple
constrains.
> for example
>
> data frame: data
>? value??? class??? percent
> 15526??? 36??? 4.6875
> 15527??? 62??? 85.9375
> 15527??? 82??? 32.4564
> 15528??? 36??? 70.3125
> 15528??? 62??? 9.375
> 15528??? 82??? 74.6875
>
> I need to regroup each class that have greater than or equal to 70 percent
> into new group. Similarly, I also need to regroup each class that have less
> than 70 percent into new group.
>
> I can do this by using following syntax for each class
> class36<- data[data$class==36&data$percent>70,]
> class36a<- data[data$class==36&data$percent<=70,]
> but I have 100 different classes. In order to do this for all 100 classes,
I
> have write that syntax 100 times. There would be some way to do dynamically
> to regroup for 100 classes (may be using for loop) but I dont know. Can you
> please help in this.
> Output should be like
> data frame: class36
> value??? class??? percent
> 15528??? 36??? 70.3125
>
> data frame: class36a
> value??? class??? percent
> 15526??? 36??? 4.6875
>
> dat.a <- dat[ dat[["class"]] %in% dat[
dat[["percent"]] >70, "class"] , ]
> dat.a
? value class percent
1 15526? ? 36? 4.6875
2 15527? ? 62 85.9375
3 15527? ? 82 32.4564
4 15528? ? 36 70.3125
5 15528? ? 62? 9.3750
6 15528? ? 82 74.6875

> row.names(dat.a) <- unlist(tapply(dat.a$class, dat.a$class, function(x)
paste0(x, letters[1:length(x)])))
> dat.a
? ? value class percent
36a 15526? ? 36? 4.6875
36b 15527? ? 62 85.9375
62a 15527? ? 82 32.4564
62b 15528? ? 36 70.3125
82a 15528? ? 62? 9.3750
82b 15528? ? 82 74.6875

You can split by the NROW of dat.a if you want.

--David.
>
> data frame: class62
> 15527??? 62??? 85.9375
>
> data frame: class62a
> 15528??? 62??? 9.375
>
> data frame: class82
> 15528??? 82??? 74.6875
>
> data frame: class82a
> 15527??? 82??? 32.4564
>
> Thank you very much your help..
> P.
>
>
>
> --
> View this message in context:
http://r.789695.n4.nabble.com/R-help-subsetting-data-frame-that-meeting-multiple-criteria-tp4650601.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
Alameda, CA, USA

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.