On 20/05/2015 7:13 PM, Vin Cheng wrote:
> Hi,
>  
> I'm trying to group rows in a dataframe with SPCLORatingValue factor >16 and 
> summing the Wgt's that correspond to this condition.  There are 100 
> dataframes in a list.  
>  
> Some of the dataframes won't have any rows that have this condition 
> SPCLORatingValue>16 and therefore no corresponding weight.  
>  
> My problem is that I need to have a corresponding value for each dataframe in 
> the list - so 100 values. 
>  
> If dataframe 44 doesn't have any SPCLORatingValue>16, then I end up getting a 
> vector that's 99 long vs. 100.  putting value 45 into 44's slot and so on.
>  
> Is there either an if/else statement or argument I can place into subset to 
> put a 0 for the data frames that don't have SPCLORatingValue>16?
>  
> GenEval[18,1:100] <- 
> t(summaryBy(Wgt.sum~as.numeric(.id),data=subset(ldply(Generation,function(x) 
> summaryBy(Wgt ~ SPCLORatingValue, data=x, 
> FUN=c(sum))),SPCLORatingValue>16),FUN=c(sum),order=FALSE))
>  

The summaryBy function is not in base R.  There's a function with that
name in the doBy package; is that the one you're using?

You doing say how to do the grouping, and I can't read your code to
figure it out, but this code will do what you want with suitable inputs:

by(df, group, function(subset) with(subset, sum(Wgt[SPCLORatingValue >
16])))

where df is your dataframe, and group is a variable that defines the groups.

Duncan Murdoch

______________________________________________
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.

Reply via email to