Subset and 0 replace?
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