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

David Winsemius dwinsemius at comcast.net
Wed Aug 24 00:48:56 CEST 2011


On Aug 23, 2011, at 6:38 PM, David Winsemius wrote:

>
> 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"))

Make that:
d2 <- ddply(d, NULL , transform,
    daterep =  as.Date(strptime(daterep, format="%Y%m%d")) )
d2            # you do get an unnecessary column


>
> -- 
>
> David Winsemius, MD
> West Hartford, CT
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list