日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

從暫元里取出子元素 | Stata編程

 對對子不錯 2019-07-15

Stata在金融場景里使用的兩個例子里,我們討論了如何下載美聯(lián)儲加息前后兩天的美國國債利率期限結構的數(shù)據(jù)。自從2017年以來,美國總共加過7次息, 2017年3月16, 6月15,12月14;2018年3月20,6月12,9月25和12月18日。

當時有位讀者留言,說Stata因為沒有列表格式,所以循環(huán)起來有點麻煩。最近想到了另外一個辦法來解決這個問題。而這個辦法的核心思想就是從定義的暫元集里取出子元素,這和列表(list)的思維有異曲同工之妙。

最初看到這個例子是在Stata官網(wǎng),他們需要做一個平行(parallel)的循環(huán),即從暫元集A取出的元素和暫元集B取出的元素要并列地展示在一起。下面這個例子:

local agrp 'cat dog cow pig'
local bgrp 'meow woof moo oinkoink '
local n : word count `agrp'
local m: word count `bgrp'

forvalues i = 1/`n' {
     local a : word `i' of `agrp'
     local b : word `i' of `bgrp'
     di '`a' says `b''
}

我們得到的結果是:

cat says meow
dog says woof
cow says moo
pig says oinkoink

如果我們掌握了這種從暫元集里取元素的循環(huán)方式,對于上面尋找加息前后兩天數(shù)據(jù)的例子,我們可以使用如下的程序:

clear
freduse DGS30 DGS20 DGS10 DGS7 DGS5 DGS3 DGS2 DGS1 DGS6MO DGS3MO DGS1MO
save fred_data,replace

clear
input year month day
2017 3 16
2017 6 15
2017 12 14
2018 3 20
2018 6 12
2018 9 25
2018 12 18 
end

gen daten=mdy(month,day,year)
format daten %td
keep daten
levelsof daten,local(fdate)
save daten,replace


use fred_data,clear
keep if year(daten)>=2017

levelsof daten,local(fulldate)

local n : word count `fdate'
local m: word count `fulldate'


tempname memhold

postfile `memhold' day using date.dta,replace

forvalue i=1/`n'{
forvalue j=1/`m'{

local a : word `i' of `fdate'
local b : word `j' of `fulldate'

if `a'==`b'{

local b1 : word `=`j'-2' of `fulldate'
post  `memhold' (`b1') 
local b2 : word `=`j'-1' of `fulldate'
post  `memhold' (`b2') 
local b3 : word `=`j'+1' of `fulldate'
post  `memhold' (`b3') 
local b4 : word `=`j'+2' of `fulldate'
post  `memhold' (`b4') 

}
}
}

postclose `memhold'

use date,clear
format day %td
sort day

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多