Skip to content

ddply - how to transform df column "in place"

5 messages · jjap, Ista Zahn, Justin Haynes +1 more

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

Thanks for any hints,

---jean

--
View this message in context: http://r.789695.n4.nabble.com/ddply-how-to-transform-df-column-in-place-tp3764037p3764037.html
Sent from the R help mailing list archive at Nabble.com.
#
Hi Jean,
On Tue, Aug 23, 2011 at 6:16 PM, jjap <jean.plamondon at fpinnovations.ca> wrote:
There is no "plyr way" to do this, as this is not the kind of
operation plyr is designed to carry out. plyr is designed to simplify
the process of 1) splitting the data into groups, 2) operating on each
group, and 3) putting the results back together. Since your example
does not involve this kind of split-apply-combine approach plyr will
not help you.

HTH,
Ista

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

            
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"))
#
On Aug 23, 2011, at 6:38 PM, David Winsemius wrote:

            
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