Statalist


[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

st: RE: calculating previous transactions for the same issuer


From   "Nick Cox" <[email protected]>
To   <[email protected]>
Subject   st: RE: calculating previous transactions for the same issuer
Date   Wed, 10 Oct 2007 12:21:59 +0100

This came up earlier this year on Statalist and was the subject
of a Tip in the Stata Journal: 

see e.g. 

<http://www.stata.com/statalist/archive/2007-07/msg00673.html>

earlier and later posts in the same thread

and Stata Tip 51 "Events in intervals" in SJ 7(3) 2007. 

I am going to assume that 730 days earlier is adequate 
as a definition of two years previous. If you want something 
more elaborate, watch out for  
a problem with leap years: if 29 Feb 2000 (say) was a transaction 
date then 

mdy(month(sale_date), day(sale_date), year(sale_date) - 2) 

will yield missing as there was no 29 Feb 1998. Thus 
you might want instead 

cond(month(sale_date) == 2 & day(sale_date) == 29,
mdy(3, 1, year(sale_date)), 
mdy(month(sale_date), day(sale_date), year(sale_date) - 2)) 

In essence, I think you need to loop over observations: 

gen trans_prev2yr = . 

qui forval i = 1/`=_N' { 
	count if bond == bond[`i'] & inrange(sale_date[`i'] - sale_date, 0, 730)
	replace trans_prev2yr = r(N) in `i' 
}

This will be slow, but is, modulo any typos, a solution. 
	
Nick 
[email protected] 

Gao Liu
 
> I have a dataset that contains three variables: transaction_ID,
> bond_issuer_name and sale_date. Each issuer may have multiple
> transactions in the dataset. I want to creat a new variable indicating
> that for each transaction, how many previous transactions the same
> bond issuer have in the past two years (two years before the sale day
> of the transaction).

*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/



© Copyright 1996–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index