日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1.導讀

眾所周知,gen是Stata中使用頻率非常高的變量生成命令之一。誒,難道還有其他變量生成命令?是的,egen(extension of generate)作為gen的擴展,對gen命令進行了補充,幫助我們更好地使用變量生成功能。2.gen與egen的比較

我們將從語法出發,比較gen與egen的異同,看看egen是如何對gen進行擴展的。

gen的語法為:

generate [type] newvar[:lblname] =exp [if] [in] [,before(varname) |after(varname)]

egen的語法為:

egen [type] newvar = fcn(arguments) [if] [in] [, options]

相同點:

(1)gen和egen都是變量生成命令;

(2)變量類型[type]均為可選項,缺省時,gen和egen能夠根據新生成的變量值自動判斷并分配數據類型;

(3)兩者都能選用[if]和[in]進行條件判斷和范圍選擇;

(4)兩者都可以使用by前綴(在某些情況下egen無法使用by分組功能)。

不同點:

(1)[:lblname]選項使gen可以在生成新變量的同時賦予其已定義的值標簽,并且[, before(varname) |after(varname)]選項允許我們調整新變量的順序;

(2)敲重點:使用gen生成的新變量,其變量值是由給定的表達式(exp)計算所得,表達式中可以使用Stata中的任意運算符(如,代數運算符”+” “-“ “*” “\”,邏輯運算符”>” “<” “|” “&” “!”等)和九大類函數;

(3)敲重點:egen只能使用專屬的egen函數來為新變量計算變量值,如mean()、rank()等。值得注意的是,egen函數只能在egen命令下使用,不能用在gen的表達式中,egen命令也無法使用任何運算符或九大類函數來計算生成變量值;

(4)在使用gen命令時,_n和_N是我們常用的下標變量,用于表示行號和總觀測值非常方便,但egen卻無法使用。這是為什么呢?因為egen專屬函數往往以某個變量或某一觀測目標為參數,計算某個變量(一列)或觀測目標(一行)的某種特征(比如均值,使用mean()),因此無需使用_n和_N。這也提示了egen生成的新變量值往往是一個常數(constant),當然也有egen專屬函數的返回值不是常數,而gen生成的變量值則是一個變動值(running value)。

3.案例分析

下面,我們通過一個簡單的例子來驗證上述異同點。

現有兩個家庭:第一個家庭是一個三口之家,父親、母親、女兒的年齡分別是44、41、20歲;第二個家庭三代同堂,祖父祖母為83、85歲,父親母親為45、44歲,兒子24歲,孫女3歲。

插入input命令,把兩個家庭的把相關數據寫入stata數據集:

input hid age gender income1 44 1 90001 41 0 80001 20 0 50002 83 1 20002 85 0 20002 45 1 60002 44 0 80002 24 1 40002 3 0 0end

查看Stata數據集:

 

特別地,目前僅發現sum()函數能夠同時被gen和egen使用。利用gen命令,使用sum()函數生成的IncomeSumg是列累積和,比如IncomeSumg[2]=income[1]+ income[2] ,是一個變動值(running value),而在egen命令下sum()返回的則是列總和,IncomeSume的每一個變量值都等于income變量值的總和(即44000=5000+8000+9000+0+4000+8000+6000+2000+2000),是一個常數(constant)。

實際上,sum()作為一個常規數學函數,并不屬于egen專屬函數,并且egen專屬函數中的total()函數功能與sum()完全一致——返回列總和。這個矛盾我們目前尚無答案,讀者朋友們如有合理的想法請在評論區告訴我們唷~4.結論

綜合上述分析,我們能夠得到啟示:使用gen命令創建新變量是一種“相對”創建,比如,現要求生成一個新變量,個人年收入incomey:

gen incomey = income*1

這個命令的實質是,創建一個新變量incomey,使得:

incomey[1] = income[1]*12incomey[2] = imcome[2]*12…incomey[_N] = income[_N]*12

而egen的某些專屬函數的參數往往是某一整行或某一整列,比如計算兩個家庭的月收入均值,月收入的下四分位數:

egen meani = mean(income)egen pctile4 = pctile(income),p(25)

其中,income是作為收入總和(即44000)參與計算的,這與gen命令有顯著的不同。

當然,egen還有許多其他專屬函數,比如anycount()、anymatch()等使用“相對”創建方法的專屬函數,也有rowfirst()、rowmax()等對每行進行匹配和判斷的函數……總之,當你想創建一個以整行或整列的特征為結果或判斷、匹配條件時就可以考慮使用egen命令啦。

分享到:
標簽:rank函數 rank函數怎么用 rank函數的使用方法 rank函數的用法 rank排名函數 Excel函數
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定