Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.


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

Re: st: AW: Forvalues [was cut function]


From   Katia Bobulova <katia.bobulova@googlemail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: AW: Forvalues [was cut function]
Date   Thu, 5 Aug 2010 16:42:49 +0100

Dear Martin,

thank you very much for your help. Your ad-hoc-ish solution works very well.

I have another problem when I consider also the price.Maybe you can
help me also for this.

This are my data:

Date                Time      Price     Newtime   Quantity
03jan2000           .           .           93000           0
03jan2000       93157    148.25     93100           1
03jan2000       93201    148.25     93200           1
03jan2000       93208    148.25     93200           1
03jan2000       93211    148.63     93200           1
03jan2000       93248    148.25     93200           1
03jan2000       93252    148.25     93200           1
03jan2000       93301    148.46     93300           1

Now I want to aggregate the quantity for the newtime, date and price.

Is there a way to keep the chronological order, i.e. the new quantity
at price 148.25 for the newtime 93200 must not be a single quantity of
4 but two quantity of two, which preserve the chronological order. In
other words, I would like to have a result like this:

Date                Time      Price     Newtime   Quantity  NewQuantity
03jan2000           .           .          93000           0              0
03jan2000       93157    148.25     93100           1              1
03jan2000       93201    148.25     93200           1              2
03jan2000       93208    148.25     93200           1              2
03jan2000       93211    148.63     93200           1              1
03jan2000       93248    148.25     93200           1              2
03jan2000       93252    148.25     93200           1              2
03jan2000       93301    148.46     93300           1              1

And then I can drop the duplicate.

I tried with collapse, constructing an id, but I cannot reach this result.

Could you please help me?

Thank you very much.
Katia


2010/8/3 Dr. Martin Weiss <martin.weiss1@gmx.de>:
>
> <>
>
> This solution is very ad-hoc-ish:
>
>
> *************
> clear*
>
> inp str10 Data Time
> 03jan2000   93157
> 03jan2000   93201
> 03jan2000   93248
> 03jan2000   93305
> 03jan2000   93602
> 03jan2000   93805
> 03jan2000   94000
> end
>
> compress
>
> gen date=date(Data, "DMY")
> form date %td
>
> drop Data
>
> replace Time=floor(Time/100)*100
> list, noo
>
> su Time, mean
> local min=r(min)
> local max=r(max)
> save myfile, replace
>
> //generate dataset featuring possible "Time" values
> drop _all
> set obs `=(round(`max', 1000)-round(`min', 1000))/100+1'
>
> gen Time=round(`min', 1000)+(_n-1)*100
> joinby using myfile, unmatched(both)
> drop _merge
> so date
> replace date=date[1]
> so Time
> li, noo
> *************
>
>
>
> HTH
> Martin
>
> -----Ursprüngliche Nachricht-----
> Von: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] Im Auftrag von Katia Bobulova
> Gesendet: Dienstag, 3. August 2010 17:27
> An: statalist@hsphsun2.harvard.edu
> Betreff: st: Forvalues [was cut function]
>
> Dear all,
>
> I am still trying to solve my problem to have equal time intervals for
> each data.
>
> This is what I have:
>
>   Data            Time
> 03jan2000       93157
> 03jan2000       93201
> 03jan2000       93248
> 03jan2000       93305
> 03jan2000       93602
> 03jan2000       93805
> 03jan2000       94000
>
> And this is what I want to obtain:
>
>   Data            Time
> 03jan2000       93000
> 03jan2000       93100
> 03jan2000       93200
> 03jan2000       93200
> 03jan2000       93300
> 03jan2000       93400
> 03jan2000       93500
> 03jan2000       93600
> 03jan2000       93700
> 03jan2000       93800
> 03jan2000       93900
> 03jan2000       94000
>
> I thought that a possibler solution would be to construct a variable
> with all the time intervals for each data.
>
> I tried to give Stata this command:
>
> forval data: 03jan2000/24feb2000{
> gen time2=93000 (1) 94000
> }
>
> The command doesn't work.
>
> Do you know if this could a possible solution to my problem and if
> yes, how to write the right code?
>
> Thank you very much.
>
> Katia
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/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/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/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index