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]
AW: st: AW: Forvalues [was cut function]
From
"Martin Weiss" <[email protected]>
To
<[email protected]>
Subject
AW: st: AW: Forvalues [was cut function]
Date
Thu, 5 Aug 2010 18:06:26 +0200
<>
This thing remains ad-hoc-ish:
*************
clear*
inp str10 Date Time Price Newtime byte 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
end
compress
list, noo
gen sortorder=_n
bys Date Newtime (Time): gen int change=sum(Price[_n-1]!=Price[_n])
bys Date Price Newtime change: egen Newquantity=total(Quantity)
so sortorder
l, noo sepby(Date Price Newtime)
*************
HTH
Martin
-----Ursprüngliche Nachricht-----
Von: [email protected] [mailto:[email protected]] Im Auftrag von Katia Bobulova
Gesendet: Donnerstag, 5. August 2010 17:43
An: [email protected]
Betreff: Re: st: AW: Forvalues [was cut function]
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 <[email protected]>:
>
> <>
>
> 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: [email protected] [mailto:[email protected]] Im Auftrag von Katia Bobulova
> Gesendet: Dienstag, 3. August 2010 17:27
> An: [email protected]
> 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/
*
* 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/