Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Re: st: Problem with datetime functions


From   George Vega Yon <[email protected]>
To   [email protected]
Subject   Re: Re: st: Problem with datetime functions
Date   Tue, 11 Jun 2013 14:43:51 -0400

Dear Nick,

Thank you for your answer. Good tip on using double when working with
dates and times, though, at least to me, it does make sense that stata
warns you (or something) in this type of operations. For most of the
people who I know that uses stata, data type distinction (float, long
or double) isn't straightforward.

I need to generate a new variable because, I merge this dataset with
another one which has a "date" variable as integer (and not as stata
date-time "data type"). Even when I prefer working with calendar
variables, almost all of the data sets in my work work with YYYYMMDD
integer format.

Best regards!,

George Vega Yon
7 647 2552
http://cl.linkedin.com/in/georgevegayon

2013/6/11 Nick Cox <[email protected]>:

It's not a bug in Stata. It's yours.

On your -generate- you need a data type other than -float- to hold
every digit exactly. -long- should work, but whenever dates and times
are mentioned, thinking -double- is safe.

-tostring, force- shows that you knowingly run risks of damaging the data.

But why -generate- a new variable? Use the display format  %tdCYND

clonevar myday2 = myday
format myday2 %tdCYND

is a better way to proceed if you really need a new variable.

Nick
[email protected]


On 11 June 2013 15:18, George Vega Yon <[email protected]> wrote:
> Dear list members,
>
> I'm facing a problem while generating an integer from day-time
> variable. In short, what I (in stata %td format) have is
>
> myday
> 01jan2002
> 02jan2002
> 03jan2002
> 04jan2002
> ...
>
> What I want is
>
> myday2
> 20020101
> 20020102
> 20020103
> 20020104
> ...
>
> Which is I though I could generate by:
>
> gen myday2 = year(myday)*10000 + month(myday)*100 + day(myday)
>
> But acctually returns
>
> myday2
> 20020100
> 20020102
> 20020104
> 20020104
>
> So, it seems that stata is rounding my new variable. I don't want to
> say that this is a bug, but what are the alternatives?.
>
> I've solve this with:
>
> format %tdCCYYNNDD myday
> tostring myday, u gen(myday2) force
> destring myday2, replace
>
> myday2
> 20020101
> 20020102
> 20020103
> 20020104
>
> But still, stata rounding my integers doesn't sound very good. Any ideas?
>
> Thanks!
>
> George Vega
>
> PS: Running on windows 7
> c(stata_version) = 12.1
> c(version) = 12.1
> c(born_date) = "18 Dec 2012"
> c(flavor) = "IC"
> c(os) = "Windows"
> c(osdtl) = "64-bit"
> c(machine_type) = "PC (64-bit x86-64)"
> c(byteorder) = "lohi"
>
>
>
> George Vega Yon
> 7 647 2552
> http://cl.linkedin.com/in/georgevegayon
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/faqs/resources/statalist-faq/
> *   http://www.ats.ucla.edu/stat/stata/
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index