Re: [R] groups Rank

2015-09-08 Thread Ragia Ibrahim

many thanks, It WORKS.

But

what If I want to add a condition that considered Measure_id , if it is '1'   
rank reverse the probability and if it is ' 2 ' rank is ordered like 
probability? 

Replying is highly appreciated 
Ragia

> From: petr.pi...@precheza.cz
> To: ragi...@hotmail.com; r-help@r-project.org
> Subject: RE: [R] groups Rank
> Date: Mon, 7 Sep 2015 09:29:21 +
>
> Hi
>
> OK, thanks for sending dput result.
>
> I am still not sure what exactly you want. Using ?ave you can get result of 
> x/max(x)
>
> dat$prob <- ave(dat$value, paste(dat$id, dat$i), FUN= function(x) x/max(x))
>
> however in case max(x) is zero the result is NA
>
> You can change it to zero
>
> dat$prob[is.nan(dat$prob)] <- 0
>
> and compute rank value by similar process.
>
> dat$rankvalue <- ave(dat$prob, paste(dat$id, dat$i), FUN = rank)
>
> But I am not sure if this is the desired result.
>
> Cheers
> Petr
>
>
>> -Original Message-
>> From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of Ragia
>> Ibrahim
>> Sent: Monday, September 07, 2015 10:12 AM
>> To: Sarah Goslee; r-help@r-project.org
>> Subject: Re: [R] groups Rank
>>
>> apology for re sending the Email, I changed the format to plain text as
>> I have been advised the data is as follow
>>
>> thanks Sarah,
>> I used pdut, and here is the data as written on R..I attached the dput
>> result structure(list(Measure_id = c(1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3,
>> 3, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3,
>> 3, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3), i = c(5, 5, 5, 5, 5, 5, 5, 5,
>> 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7,
>> 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7), j = c(1, 1, 1, 1, 1,
>> 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
>> 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5), id = c(1, 2,
>> 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
>> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
>> 11, 12), value = c(2, 1.5, 0, 0, 1, 0.5, 0, 0, 0, 0, 0.5, 2, 2, 1.5, 0,
>> 1, 2, 0, 0.5, 1.44269504088896, 0, 0, 0, 0, 1, 1.5, 0, 0, 1, 0, 0, 0,
>> 0, 0, 0, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0)), .Names =
>> c("Measure_id", "i", "j", "id", "value"), row.names = c(NA, 48L), class
>> = "data.frame")
>>
>> the data is as follow :
>>
>> Measure_id i j id value
>> 1 1 5 1 1 2.0
>> 2 1 5 2 1 2.0
>> 3 1 5 1 2 1.5
>> 4 1 5 2 2 1.5
>> 5 1 5 1 3 0.0
>> 6 1 5 2 3 0.0
>> 7 1 5 1 4 0.0
>> 8 1 5 2 4 1.0
>> 9 1 5 1 5 1.0
>> 10 1 5 2 5 2.0
>> .. ... . . .. ...
>> I want to add a probability column, the prob column depends on id
>> grouped by for each i the rank will be current (value / max value ) for
>> the same id for specific i, it would be
>>
>> Measure_id i j id value prob
>> 1 1 5 1 1 2.0 2/2
>> 2 1 5 2 1 2.0 2/2
>> 3 1 5 1 2 1.5 1.5/1.5
>> 4 1 5 2 2 1.5 1.5/1.5
>> 5 1 5 1 3 0.0 0
>> 6 1 5 2 3 0.0 0
>> 7 1 5 1 4 0.0 0/1
>> 8 1 5 2 4 1.0 1/1
>> 9 1 5 1 5 1.0 1/2
>> 10 1 5 2 5 2.0 2/3
>> .. ... . . .. ...
>>
>> then I want to add a rank column that rank regarding probability, if
>> the probability equal they took the same rank for the same id belongs
>> to the same i, otherwize lower probability took higher rank for examole
>> if we have three values for i=7 and for the three values the id is 1
>> and the probability is ( .2,.4,.5) the rank should be 3,2,1
>>
>>
>>
>> I looked at aggregate and dplyr...should I use for loop and subset each
>> i and id rows do calculations and then group them again ??
>> is there easier way?
>>
>> replying highly appreciated
>>>
>>>
>>>
>>>> Date: Sun, 6 Sep 2015 19:02:02 -0400
>>>> Subject: Re: [R] groups Rank
>>>> From: sarah.gos...@gmail.com
>>>> To: ragi...@hotmail.com
>>>> CC: r-help@r-project.org
>>>>
>>>> Please use dput() to provide data, rather than expecting people to
>>>> open random attachments. Besides, there are multiple options for
>>>> getting data into R, and we need to know exactly what you did.
>> dput()
>>>> is faster and easier.
>>>>
>>>> What have you tried? Did you look at aggregate() as I suggested?
>>>>
>>>> Sarah
>>>>
>>>> On Sa

Re: [R] groups Rank

2015-09-07 Thread PIKAL Petr
Hi

OK, thanks for sending dput result.

I am still not sure what exactly you want. Using ?ave you can get result of 
x/max(x)

dat$prob <- ave(dat$value, paste(dat$id, dat$i), FUN= function(x) x/max(x))

however in case max(x) is zero the result is NA

You can change it to zero

dat$prob[is.nan(dat$prob)] <- 0

and compute rank value by similar process.

dat$rankvalue <- ave(dat$prob, paste(dat$id, dat$i), FUN = rank)

But I am not sure if this is the desired result.

Cheers
Petr


> -Original Message-
> From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of Ragia
> Ibrahim
> Sent: Monday, September 07, 2015 10:12 AM
> To: Sarah Goslee; r-help@r-project.org
> Subject: Re: [R] groups Rank
>
> apology for re sending the Email, I changed the format to plain text as
> I have been advised the data  is as follow
>
> thanks Sarah,
> I used pdut, and here is the data as written on R..I attached the dput
> result structure(list(Measure_id = c(1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3,
> 3, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3,
> 3, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3), i = c(5, 5, 5, 5, 5, 5, 5, 5,
> 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7,
> 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7), j = c(1, 1, 1, 1, 1,
> 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
> 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5), id = c(1, 2,
> 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
> 11, 12), value = c(2, 1.5, 0, 0, 1, 0.5, 0, 0, 0, 0, 0.5, 2, 2, 1.5, 0,
> 1, 2, 0, 0.5, 1.44269504088896, 0, 0, 0, 0, 1, 1.5, 0, 0, 1, 0, 0, 0,
> 0, 0, 0, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0)), .Names =
> c("Measure_id", "i", "j", "id", "value"), row.names = c(NA, 48L), class
> = "data.frame")
>
> the data  is as follow  :
>
>Measure_id i j id value
> 1   1 5 1  1   2.0
> 2   1 5 2  1   2.0
> 3   1 5 1  2   1.5
> 4   1 5 2  2   1.5
> 5   1 5 1  3   0.0
> 6   1 5 2  3   0.0
> 7   1 5 1  4   0.0
> 8   1 5 2  4   1.0
> 9   1 5 1  5   1.0
> 10  1 5 2  5   2.0
> ..... . . ..   ...
> I want to add a probability column,  the prob column depends on id
> grouped by for each i the rank will be current (value / max value ) for
> the same id for specific i, it would be
>
>  Measure_id i j id valueprob
> 1   1 5 1  1   2.0  2/2
> 2   1 5 2  1   2.0  2/2
> 3   1 5 1  2   1.5  1.5/1.5
> 4   1 5 2  2   1.5  1.5/1.5
> 5   1 5 1  3   0.0  0
> 6   1 5 2  3   0.0  0
> 7   1 5 1  4   0.0  0/1
> 8   1 5 2  4   1.0  1/1
> 9   1 5 1  5   1.0  1/2
> 10  1 5 2  5   2.0  2/3
> ..... . . ..   ...
>
> then I want to add a rank column that rank regarding probability, if
> the probability equal they took the same rank for the same id belongs
> to the same i, otherwize lower probability took higher rank for examole
> if we have three values for i=7 and for the three values the id is 1
> and the probability is ( .2,.4,.5) the rank should be 3,2,1
>
>
>
> I looked at aggregate and dplyr...should I use for loop and subset each
> i and id rows do calculations and then group them again ??
> is there easier way?
>
> replying  highly appreciated
> >
> >
> >
> >> Date: Sun, 6 Sep 2015 19:02:02 -0400
> >> Subject: Re: [R] groups Rank
> >> From: sarah.gos...@gmail.com
> >> To: ragi...@hotmail.com
> >> CC: r-help@r-project.org
> >>
> >> Please use dput() to provide data, rather than expecting people to
> >> open random attachments. Besides, there are multiple options for
> >> getting data into R, and we need to know exactly what you did.
> dput()
> >> is faster and easier.
> >>
> >> What have you tried? Did you look at aggregate() as I suggested?
> >>
> >> Sarah
> >>
> >> On Sat, Sep 5, 2015 at 10:44 AM, Ragia Ibrahim <ragi...@hotmail.com>
> wrote:
> >>> thanks for replying, I attached the data frame for source "i" I
> want
> >>> to sum the values and get the max value then add a new column
> called
> >>> rank . That new column cell value for each source i and for
> specific
> >>> id would be (value/max value) * count of rows that have the same
> >>> criteria "same i and same id"
> >>&g

Re: [R] groups Rank

2015-09-07 Thread Ragia Ibrahim
apology for re sending the Email, I changed the format to plain text as I have 
been advised
the data  is as follow  

thanks Sarah, 
I used pdut, and here is the data as written on R..I attached the dput result
structure(list(Measure_id = c(1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 
3, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 
3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3), i = c(5, 5, 
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
7, 7, 7, 7), j = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5), id = c(1, 2, 3, 4, 5, 
6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 
9, 10, 11, 12), value = c(2, 1.5, 0, 0, 1, 0.5, 0, 0, 0, 0, 0.5, 
2, 2, 1.5, 0, 1, 2, 0, 0.5, 1.44269504088896, 0, 0, 0, 0, 1, 
1.5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 
0, 0, 0)), .Names = c("Measure_id", "i", "j", "id", "value"), row.names = c(NA, 
48L), class = "data.frame")

the data  is as follow  :

   Measure_id i j id value
1           1 5 1  1   2.0
2           1 5 2  1   2.0
3           1 5 1  2   1.5
4           1 5 2  2   1.5
5           1 5 1  3   0.0
6           1 5 2  3   0.0
7           1 5 1  4   0.0
8           1 5 2  4   1.0
9           1 5 1  5   1.0
10          1 5 2  5   2.0
..        ... . . ..   ...
I want to add a probability column,  the prob column depends on id grouped by 
for each i
the rank will be current (value / max value ) for the same id for specific i, 
it would be

 Measure_id i j id value    prob
1           1 5 1  1   2.0          2/2  
2           1 5 2  1   2.0          2/2  
3           1 5 1  2   1.5          1.5/1.5   
4           1 5 2  2   1.5          1.5/1.5 
5           1 5 1  3   0.0          0
6           1 5 2  3   0.0          0
7           1 5 1  4   0.0          0/1  
8           1 5 2  4   1.0          1/1  
9           1 5 1  5   1.0          1/2
10          1 5 2  5   2.0          2/3
..        ... . . ..   ...

then I want to add a rank column that rank regarding probability, if the 
probability equal they took the same rank for the
same id belongs to the same i, otherwize lower probability took higher rank for 
examole if we have three values for i=7 and for the three values the id is 1 
and the probability is ( .2,.4,.5) the rank should be 3,2,1



I looked at aggregate and dplyr...should I use for loop and subset each i and 
id rows do calculations and then group them again ??
is there easier way?

replying  highly appreciated
> 
> 
> 
>> Date: Sun, 6 Sep 2015 19:02:02 -0400 
>> Subject: Re: [R] groups Rank 
>> From: sarah.gos...@gmail.com 
>> To: ragi...@hotmail.com 
>> CC: r-help@r-project.org 
>> 
>> Please use dput() to provide data, rather than expecting people to 
>> open random attachments. Besides, there are multiple options for 
>> getting data into R, and we need to know exactly what you did. dput() 
>> is faster and easier. 
>> 
>> What have you tried? Did you look at aggregate() as I suggested? 
>> 
>> Sarah 
>> 
>> On Sat, Sep 5, 2015 at 10:44 AM, Ragia Ibrahim <ragi...@hotmail.com> wrote: 
>>> thanks for replying, I attached the data frame 
>>> for source "i" I want to sum the values and get the max value then add a 
>>> new column called rank . That new column cell value for each source i and 
>>> for specific id would be (value/max value) * count of rows that have the 
>>> same criteria "same i and same id" 
>>> 
>>> many thanks 
>>> Ragia 
>>> 
>>>> Date: Fri, 4 Sep 2015 10:19:35 -0400 
>>>> Subject: Re: [R] groups Rank 
>>>> From: sarah.gos...@gmail.com 
>>>> To: ragi...@hotmail.com 
>>>> CC: r-help@r-project.org 
>>>> 
>>>> Hi Ragia, 
>>>> 
>>>> I can't make out your data or desired result, but it sounds like 
>>>> aggregate() might get you started. If you need more help, please 
>>>> repost your data using dput() and do NOT post in HTML so that we can 
>>>> see what your desired result looks like. 
>>>> 
>>>> Sarah 
>>>> 
>>>> On Fri, Sep 4, 2015 at 10:12 AM, Ragia Ibrahim <ragi...@hotmail.com> 
>>>> wrote: 
>>>>> Dear Group,kinldy, I have the following data frame df 
>>>>> id value1 1 4 2 1 4 3 1 6 4 1 6 5 2 1.5 6 2 2.5 7 2 2.5 8 2 2.5 
>>>>> 
>>>>> add rank column regarding id coulmn where rank for the highest value 
>>>>>

Re: [R] groups Rank

2015-09-06 Thread Sarah Goslee
Please use dput() to provide data, rather than expecting people to
open random attachments. Besides, there are multiple options for
getting data into R, and we need to know exactly what you did. dput()
is faster and easier.

What have you tried? Did you look at aggregate() as I suggested?

Sarah

On Sat, Sep 5, 2015 at 10:44 AM, Ragia Ibrahim <ragi...@hotmail.com> wrote:
> thanks for replying, I attached the data frame
>  for source "i" I want to sum the values and get the max value then add a
> new column called rank . That new column cell value for each source i and
> for specific id would be (value/max value) * count of rows that have the
> same criteria "same i and same id"
>
> many thanks
> Ragia
>
>> Date: Fri, 4 Sep 2015 10:19:35 -0400
>> Subject: Re: [R] groups Rank
>> From: sarah.gos...@gmail.com
>> To: ragi...@hotmail.com
>> CC: r-help@r-project.org
>>
>> Hi Ragia,
>>
>> I can't make out your data or desired result, but it sounds like
>> aggregate() might get you started. If you need more help, please
>> repost your data using dput() and do NOT post in HTML so that we can
>> see what your desired result looks like.
>>
>> Sarah
>>
>> On Fri, Sep 4, 2015 at 10:12 AM, Ragia Ibrahim <ragi...@hotmail.com>
>> wrote:
>> > Dear Group,kinldy, I have the following data frame df
>> > id value1 1 4 2 1 4 3 1 6 4 1 6 5 2 1.5 6 2 2.5 7 2 2.5 8 2 2.5
>> >
>> > add rank column regarding id coulmn where rank for the highest value
>> > would be 1, others rank would be the (value/ value of heighest)/ number of
>> > rows that took the same value
>> > thus the data frame should be
>> > id value Rank1 1 4 0.332 1 4 0.333 1 6 0.54 1 6 0.55 2 1.5 0.6 6 2 2.5
>> > 0.337 2 2.5 0.338 2 2.5 0.33
>> >
>> > how to reach this resultthanks in advanceRagia
>> > [[alternative HTML version deleted]]
>> >

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.


Re: [R] groups Rank

2015-09-04 Thread Sarah Goslee
Hi Ragia,

I can't make out your data or desired result, but it sounds like
aggregate() might get you started. If you need more help, please
repost your data using dput() and do NOT post in HTML so that we can
see what your desired result looks like.

Sarah

On Fri, Sep 4, 2015 at 10:12 AM, Ragia Ibrahim  wrote:
> Dear Group,kinldy, I have the following data frame df
>  id value1   1  4   2   1  4   3   1  6   4   
> 1  6   5   2  1.5   6   2  2.5  7   2  2.5   
> 8   2  2.5
>
> add rank column regarding id coulmn where rank for the highest value would be 
> 1, others rank would be the (value/ value of heighest)/ number of rows that 
> took the same value
> thus the data frame should be
> id valueRank1   1  4
> 0.332   1  40.333   1  6  
>   0.54   1  60.55   2  1.5
>   0.6   6   2  2.5  0.337   2  2.5
>   0.338   2  2.5  0.33
>
> how to reach this resultthanks in advanceRagia
> [[alternative HTML version deleted]]
>

-- 
Sarah Goslee
http://www.functionaldiversity.org

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.


[R] groups Rank

2015-09-04 Thread Ragia Ibrahim
Dear Group,kinldy, I have the following data frame df
 id value1   1  4   2   1  4   3   1  6   4 
  1  6   5   2  1.5   6   2  2.5  7   2  2.5   8
   2  2.5  

add rank column regarding id coulmn where rank for the highest value would be 
1, others rank would be the (value/ value of heighest)/ number of rows that 
took the same value
thus the data frame should be
id valueRank1   1  4
0.332   1  40.333   1  6
0.54   1  60.55   2  1.5  
0.6   6   2  2.5  0.337   2  2.5
  0.338   2  2.5  0.33

how to reach this resultthanks in advanceRagia  

  
[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.