
On 30 Jan 2010, at 4:20 PM, David Winsemius wrote:

> 
> On Jan 30, 2010, at 4:09 PM, david hilton shanabrook wrote:
> 
>> I have a data frame with two columns, a factor and a numeric.  I want to create data frame with the factor, its frequency and the median of the numeric column
>>> head(motifList)
>> events     score
>> 1  aeijm -0.25000000
>> 2  begjm -0.25000000
>> 3  afgjm -0.25000000
>> 4  afhjm -0.25000000
>> 5  aeijm -0.25000000
>> 6  aehjm  0.08333333
>> 
>> To get the frequency table of events:
>> 
>>> motifTable <- as.data.frame(table(motifList$events))
>>> head(motifTable)
>>  Var1 Freq
>> 1 aeijm  110
>> 2 begjm   46
>> 3 afgjm  337
>> 4 afhjm  102
>> 5 aehjm  190
>> 6 adijm   18
>>> 
>> 
>> Now get the score column back in.
>> 
>>> motifTable2 <- merge(motifList, motifTable, by="events")
>>> head(motifTable2)
>> events     percent freq
>> 1  adgjm  0.00000000  111
>> 2  adgjm          NA  111
>> 3  adgjm  0.13333333  111
>> 4  adgjm  0.06666667  111
>> 5  adgjm -0.16666667  111
>> 6  adgjm          NA  111
>>> 
>> 
>> Then lastly to aggregate on the events column getting the median of the score
>>> motifTable3 <- aggregate.data.frame(motifTable2, by=list(motifTable2$events), FUN=median, na.rm=TRUE)
>> Error in median.default(X[[1L]], ...) : need numeric data
>> 
>> Which gives the error as events are a factor.  Can someone enlighten me to a more obvious approach?
> 
> I don't think grouping on a factor is the source of your error. You have NA's in your data and median will choke on those unless you specify na.rm=TRUE.
> 
> -- 

I thought the na.rm=TRUE in the aggregate function would do this (see above).  I also tried it with 

> medianRmNa <- function(data) {
	return(median(data, na.rm=TRUE))}

> motifTable3 <- aggregate.data.frame(motifTable2, by=list(motifTable2$events), FUN=medianRmNa)
Error in median.default(data, na.rm = TRUE) : need numeric data

same error.

I did leave a line out of the above script, 

names(motifTable) <- c("events", "freq")
which helps explain why the merge works

dhs


	[[alternative HTML version deleted]]

