[R] ddply - how to transform df column "in place"

David Winsemius dwinsemius at comcast.net
Wed Aug 24 00:38:10 CEST 2011


On Aug 23, 2011, at 6:16 PM, jjap wrote:

> Dear R-users,
>
> I am trying to get the plyr syntax right, without much success.
>
> Given:
> d<- data.frame(cbind(x=1,y=seq(20100801,20100830,1)))
> names(d)<-c("first", "daterep")
> d2<-d
>
> # I can convert the daterep column in place the classic way:
> d$daterep<-as.Date(strptime(d$daterep, format="%Y%m%d"))
>
> # How to do it the plyr way?
> ddply(d2, c("daterep"), function(df){as.Date(df, format="%Y%m%d")})
> # returns: Error in as.Date.default(df, format = "%Y%m%d") :
> #   do not know how to convert 'df' to class "Date"

I'm pretty sure that when you do that you are sending dataframes to  
'x' that have been split apart on the basis of their daterep values.  
Why should there be a "plyr way" of converting types when there is no  
splitting of dataframes needed?

If you wanted nevertheless to do it the "plyr way":

d2 <- ddply(d, NULL , transform,
     daterep =  as.Date(strptime(d$daterep, format="%Y%m%d"))

-- 

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list