Wow,

That's nice.

Should work well, but I just realized that I missed something in 
explaining my code.

I need to calculate the exp function on X

so it should be

exp(x) / sum(exp(x)) for each group

I tried this with:

foo <- ave(rawdata$foo,rawdata$code,FUN=function(x) exp(x) / sum(exp(x)))

That didn't work.  I got a lot of NaN

-N

On 11/2/09 3:30 AM, Peter Dalgaard wrote:
> Dimitris Rizopoulos wrote:
>    
>> you could try something along these lines:
>>
>> data<- data.frame(y = rnorm(100), group = rep(1:10, each = 10))
>>
>> data$sum<- ave(data$y, data$group, FUN = sum)
>> data$norm.y<- data$y / data$sum
>> data
>>      
> .. or even
>
> transform(data, norm=ave(y, group, FUN = function(x) x/sum(x)))
>
>    
>> I hope it helps.
>>
>> Best,
>> Dimitris
>>
>>
>> Noah Silverman wrote:
>>      
>>> Hi,
>>>
>>> I'm trying to normalize some data.
>>> My data is organized by groups.  I want to normalize PER GROUP as
>>> opposed to over the entire data set.
>>>
>>> The current double loop that I'm using takes almost an hour to run on
>>> about 30,000 rows of data in 2,500 groups.
>>>
>>> I'm currently doing this:
>>>
>>> -------------------------------------
>>> for(group in unique(data$group)){
>>>      sum_V1<- sum(data$V1[data$group == group])
>>>
>>>      for(subject in data$subject[data$group == group]){
>>>          data$V1_norm[(data$group == group&  data$subject == subject)]
>>> <- data$V1[(data$group == group&  data$subject == subject)] / sum_V1
>>>      }
>>> }
>>> -------------------------------------
>>>
>>> Can anyone point me to a faster way to do this in R.
>>>
>>> Thanks!
>>>
>>> -N
>>>
>>> ______________________________________________
>>> R-help@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.
>>>
>>>        
>>      
>
>    

	[[alternative HTML version deleted]]


