[R] R help..subsetting data frame that meeting multiple criteria
David Winsemius
dwinsemius at comcast.net
Sat Nov 24 07:20:11 CET 2012
On Nov 23, 2012, at 6:32 PM, arun wrote:
> 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
>
Great. Seems to be working as requested. Er, .... What's your point?
--
David.
> ----- 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.
>
David Winsemius, MD
Alameda, CA, USA
More information about the R-help
mailing list