rajeshj at cse.iitm.ac.in
2010-Oct-01 05:59 UTC
[R] Converting a dataframe column from string to datetime
Hi,
I have a dataframe column of the form
v<-c("Fri Feb 05 20:00:01.43000 2010","Fri Feb 05
20:00:02.274000 2010","Fri Feb 05 20:00:02.274000 2010","Fri
Feb 05 20:00:06.34000 2010")
I need to convert this to datetime form. I did the following..
lapply(v,function(x){strptime(x, "%a %b %d %H:%M:%OS %Y")})
This gives me a list that looks like this...
[[1]]
[1] "2010-02-05 20:00:01.43"
[[2]]
[1] "2010-02-05 20:00:02.274"
[[3]]
[1] "2010-02-05 20:00:02.274"
[[4]]
[1] "2010-02-05 20:00:06.34"
However, when I do an unlist...I gets converted to something like this...
sec min hour mday mon year wday yday isdst sec min hour
mday mon year wday yday isdst sec
1.430 0.000 20.000 5.000 1.000 110.000 5.000 35.000 0.000 2.274
0.000 20.000 5.000 1.000 110.000 5.000 35.000 0.000 2.274
min hour mday mon year wday yday isdst sec min hour
mday mon year wday yday isdst
0.000 20.000 5.000 1.000 110.000 5.000 35.000 0.000 6.340 0.000
20.000 5.000 1.000 110.000 5.000
I want it to become a dataframe column except for a change in the datatype to
datetime...how can I achieve this?
[[alternative HTML version deleted]]
Is it okay with you?
Reduce("rbind", lapply(lapply(v,function(x){strptime(x, "%a %b %d
%H:%M:%OS
%Y")}), as.character))
--
View this message in context:
http://r.789695.n4.nabble.com/Converting-a-dataframe-column-from-string-to-datetime-tp2853709p2869793.html
Sent from the R help mailing list archive at Nabble.com.
jim holtman
2010-Oct-01 09:00 UTC
[R] Converting a dataframe column from string to datetime
I think you want to use as.POSIXct to get the date value:> v<-c("Fri Feb 05 20:00:01.43000 2010","Fri Feb 05 20:00:02.274000 2010","Fri Feb 05 20:00:02.274000 2010","Fri Feb 05 20:00:06.34000 2010") > x <- as.POSIXct(v, format= "%a %b %d %H:%M:%OS %Y") > x[1] "2010-02-05 20:00:01 EST" "2010-02-05 20:00:02 EST" [3] "2010-02-05 20:00:02 EST" "2010-02-05 20:00:06 EST"> str(x)POSIXct[1:4], format: "2010-02-05 20:00:01" "2010-02-05 20:00:02" ... On Fri, Oct 1, 2010 at 1:59 AM, rajeshj at cse.iitm.ac.in <rajeshj at cse.iitm.ac.in> wrote:> > Hi, > > I have a dataframe column of the form > v<-c("Fri Feb 05 20:00:01.43000 2010","Fri Feb 05 20:00:02.274000 2010","Fri Feb 05 20:00:02.274000 2010","Fri Feb 05 20:00:06.34000 2010") > > I need to convert this to datetime form. I did the following.. > > lapply(v,function(x){strptime(x, "%a %b %d %H:%M:%OS %Y")}) > > This gives me a list that looks like this... > > [[1]] > [1] "2010-02-05 20:00:01.43" > [[2]] > [1] "2010-02-05 20:00:02.274" > [[3]] > [1] "2010-02-05 20:00:02.274" > [[4]] > [1] "2010-02-05 20:00:06.34" > > However, when I do an unlist...I gets converted to something like this... > > sec ? ? ?min ? ?hour ? ?mday ? ? mon ? ?year ? ?wday ? ?yday ? isdst ? ? sec ? ? min ? ?hour ? ?mday ? ? mon ? ?year ? ?wday ? ?yday ? isdst ? ? sec > ?1.430 ? 0.000 ?20.000 ? 5.000 ? 1.000 110.000 ? 5.000 ?35.000 ? 0.000 ? 2.274 ? 0.000 ?20.000 ? 5.000 ? 1.000 110.000 ? 5.000 ?35.000 ? 0.000 ? 2.274 > ? ?min ? ?hour ? ?mday ?mon ? ?year ? ?wday ? ?yday ? isdst ? ? sec ? ? min ? ?hour ? ?mday ? ? mon ? ?year ? ?wday ? ?yday ? isdst > ?0.000 ?20.000 ? 5.000 ? 1.000 110.000 ? 5.000 ?35.000 ? 0.000 ? 6.340 ? 0.000 ?20.000 ? 5.000 ? 1.000 110.000 ? 5.000 > > I want it to become a dataframe column except for a change in the datatype to datetime...how can I achieve this? > ? ? ? ?[[alternative HTML version deleted]] > > ______________________________________________ > 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. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?
MacQueen, Don
2010-Oct-01 15:21 UTC
[R] Converting a dataframe column from string to datetime
You’re working too hard. Use this:
tms <- as.POSIXct(strptime(v, "%a %b %d %H:%M:%OS %Y"))
Take note of the fact that there are two types of datetime objects: POSIXct and
POSIXlt.
Your unlist() gave what seemed a strange result because you used on an “lt”
object. Had you given it a “ct” object it would have made sense. To see, try
lapply(v,function(x){as.POSIXct(strptime(x, "%a %b %d %H:%M:%OS
%Y"))})
But using lapply() was more complicated than necessary.
-Don
On 9/30/10 10:59 PM, "rajeshj@cse.iitm.ac.in"
<rajeshj@cse.iitm.ac.in> wrote:
Hi,
I have a dataframe column of the form
v<-c("Fri Feb 05 20:00:01.43000 2010","Fri Feb 05
20:00:02.274000 2010","Fri Feb 05 20:00:02.274000 2010","Fri
Feb 05 20:00:06.34000 2010")
I need to convert this to datetime form. I did the following..
lapply(v,function(x){strptime(x, "%a %b %d %H:%M:%OS %Y")})
This gives me a list that looks like this...
[[1]]
[1] "2010-02-05 20:00:01.43"
[[2]]
[1] "2010-02-05 20:00:02.274"
[[3]]
[1] "2010-02-05 20:00:02.274"
[[4]]
[1] "2010-02-05 20:00:06.34"
However, when I do an unlist...I gets converted to something like this...
sec min hour mday mon year wday yday isdst sec min hour
mday mon year wday yday isdst sec
1.430 0.000 20.000 5.000 1.000 110.000 5.000 35.000 0.000 2.274
0.000 20.000 5.000 1.000 110.000 5.000 35.000 0.000 2.274
min hour mday mon year wday yday isdst sec min hour
mday mon year wday yday isdst
0.000 20.000 5.000 1.000 110.000 5.000 35.000 0.000 6.340 0.000
20.000 5.000 1.000 110.000 5.000
I want it to become a dataframe column except for a change in the datatype to
datetime...how can I achieve this?
[[alternative HTML version deleted]]
______________________________________________
R-help@r-project.org mailing list
https://BLOCKEDstat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://BLOCKEDwww.BLOCKEDR-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
--
Don MacQueen
Environmental Protection Department
Lawrence Livermore National Laboratory
925 423-1062
[[alternative HTML version deleted]]