[程式] STATA的迴圈問題

看板Statistics作者 (留戀)時間5年前 (2020/09/30 00:45), 5年前編輯推噓7(7028)
留言35則, 5人參與, 5年前最新討論串1/1
程式碼如貼圖。 https://imgur.com/a/NpxdUyj 不知道為什麼一直出現'i' invalid name, 有請高手解答,感謝。 舉個例,s_amt是我要的結果,也就是某一列的s_amt是第一列到此列的t_amt總和 t_amt s_amt 1 1 2 3 3 6 4 10 5 15 6 21 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.58.186 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1601397938.A.940.html

09/30 01:52, 5年前 , 1F
你的code怪怪的 但你應該要用 `i' 這兩個引號
09/30 01:52, 1F

09/30 07:58, 5年前 , 2F
謝謝樓上的回答,確實是`i'才對。
09/30 07:58, 2F

09/30 07:59, 5年前 , 3F
經修改後,能跑出結果來。但是這code是參考別人的
09/30 07:59, 3F

09/30 08:00, 5年前 , 4F
我不知道這邊用local這個指令的意思是什麼?
09/30 08:00, 4F

09/30 08:00, 5年前 , 5F
另外,想問說,樓上覺得怪怪的,是那個地方怪?感謝
09/30 08:00, 5F

09/30 08:08, 5年前 , 6F
如果一開始local i=1就跑不出來,i=2就可以下,如下圖
09/30 08:08, 6F

09/30 08:08, 5年前 , 7F

09/30 11:02, 5年前 , 8F
i=1時s_amt[`i'-1]為s_amt[0]=missing
09/30 11:02, 8F

09/30 11:03, 5年前 , 9F
導致與其他變數相加也等於missing
09/30 11:03, 9F

09/30 11:48, 5年前 , 10F
謝謝樓上的回答。可以請教local這指令的意義嗎?
09/30 11:48, 10F

09/30 11:49, 5年前 , 11F
因為自己比較常用SAS,而在i前面幾乎都是接do
09/30 11:49, 11F

09/30 11:49, 5年前 , 12F
不太知道Local在STATA的用法
09/30 11:49, 12F

09/30 20:22, 5年前 , 13F

09/30 21:40, 5年前 , 14F
以stata寫程式經驗通常不會太好(語法真是醜惡),如無必
09/30 21:40, 14F

09/30 21:40, 5年前 , 15F
要還是用其他方式替代吧
09/30 21:40, 15F

09/30 22:10, 5年前 , 16F
可以考慮用for-loop,不用設local,eg, forvalues i=1/9 {}
09/30 22:10, 16F

09/30 22:10, 5年前 , 17F
應該是 1/8
09/30 22:10, 17F

09/30 23:03, 5年前 , 18F
我有試著用forvalue寫,但是會出現weights not allowed
09/30 23:03, 18F

09/30 23:03, 5年前 , 19F

09/30 23:03, 5年前 , 20F
不知道是那個環節出錯?
09/30 23:03, 20F

, , 21F
哦哦。我用forvalue寫出來了
※ 編輯: steven225 (123.194.65.43 臺灣), 10/01/2020 00:12:09

10/01 00:12, 5年前 , 22F

10/01 00:13, 5年前 , 23F
但上圖的寫法裡,為什麼上方的不行,但下方的可以?
10/01 00:13, 23F

10/01 00:14, 5年前 , 24F
in後面不能放 1+`i'嗎?
10/01 00:14, 24F

10/01 00:15, 5年前 , 25F
有試過放(1+`i')或[1+`i'],但都不行
10/01 00:15, 25F

10/01 00:15, 5年前 , 26F
想請教為什麼?感謝
10/01 00:15, 26F

10/01 00:15, 5年前 , 27F
建議你直接舉例說明你想完成甚麼目的 var[num]不是stata
10/01 00:15, 27F

10/01 00:16, 5年前 , 28F
的指令,stata只有在處理matrix時才會這樣寫
10/01 00:16, 28F
※ 編輯: steven225 (223.136.23.142 臺灣), 10/01/2020 00:31:07

10/01 00:31, 5年前 , 29F
已更新原文內容舉列,感謝
10/01 00:31, 29F

10/01 08:47, 5年前 , 30F
不用loop, 直接用sum()函數
10/01 08:47, 30F

10/01 08:47, 5年前 , 31F
generate s_amt = sum(t_amt)
10/01 08:47, 31F

10/01 09:36, 5年前 , 32F
原來sum可以這樣用,受教了,感謝
10/01 09:36, 32F

10/05 12:06, 5年前 , 33F
local應該是宣告一個區域變數,相對的global就是宣告
10/05 12:06, 33F

10/05 12:06, 5年前 , 34F
全域變數,變數除了generate也可以搜尋egen 你會發現
10/05 12:06, 34F

10/05 12:07, 5年前 , 35F
新天地~
10/05 12:07, 35F
文章代碼(AID): #1VSsIob0 (Statistics)