[R] Row median of Date class variables in a data frame

Prof Brian Ripley ripley at stats.ox.ac.uk
Thu Feb 24 08:17:18 CET 2005


Note that the argument to apply() is a matrix, not a data frame, so your
object has been coerced to a matrix.  That is spelled out on the help page 
for apply(), as it is frequent misuse.

You would be better off using a matrix of class Date in the first place if 
you want row operations.


On Wed, 23 Feb 2005, Stephen D. Weigand wrote:

> I am trying to calculate the median of each row of a
> data frame where the data frame consist of
> columns of class Date.
>
> Below are my test data and best attempt at using apply.
> I didn't see a solution via Google or the Baron search
> site.
>
> I'd be grateful for any suggestions or solutions.
> I'm using R 2.0.0 on Mac OS X.
>
> Thank you,
>
> Stephen Weigand
>
>
> ### Test data
>
> date1 <- c(1000, 2000, 3000,4000)
> date2 <- date1 + 100
> date3 <- date2 + 100
>
> class(date1) <- class(date2) <- class(date3) <- "Date"
>
> test <- data.frame(date1, date2, date3)
>
> print(test)
>
> ### create a function for apply()
> medDate <- function(x){
>  obj <- unclass(unlist(x))
>  med <- median(obj, na.rm = TRUE)
>  med
>  class(med) <- "Date"
>  med
> }
>
> medDate(test$date1) # works
> medDate(test[1,])   # works
>
> apply(test, 1, medDate) # gives error: 'need numeric data'
> apply(test, 2, medDate) # gives error: 'need numeric data'

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list