作者steven225 (留戀)
看板Statistics
標題[程式] STATA的迴圈問題
時間Wed Sep 30 00:45:36 2020
程式碼如貼圖。
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://webptt.com/m.aspx?n=bbs/Statistics/M.1601397938.A.940.html
1F:推 evilove: 你的code怪怪的 但你應該要用 `i' 這兩個引號09/30 01:52
2F:→ steven225: 謝謝樓上的回答,確實是`i'才對。09/30 07:58
3F:→ steven225: 經修改後,能跑出結果來。但是這code是參考別人的09/30 07:59
4F:→ steven225: 我不知道這邊用local這個指令的意思是什麼?09/30 08:00
5F:→ steven225: 另外,想問說,樓上覺得怪怪的,是那個地方怪?感謝09/30 08:00
6F:→ steven225: 如果一開始local i=1就跑不出來,i=2就可以下,如下圖09/30 08:08
8F:推 riirene: i=1時s_amt[`i'-1]為s_amt[0]=missing09/30 11:02
9F:→ riirene: 導致與其他變數相加也等於missing09/30 11:03
10F:→ steven225: 謝謝樓上的回答。可以請教local這指令的意義嗎?09/30 11:48
11F:→ steven225: 因為自己比較常用SAS,而在i前面幾乎都是接do09/30 11:49
12F:→ steven225: 不太知道Local在STATA的用法09/30 11:49
14F:推 raiderho: 以stata寫程式經驗通常不會太好(語法真是醜惡),如無必09/30 21:40
15F:→ raiderho: 要還是用其他方式替代吧09/30 21:40
16F:推 evilove: 可以考慮用for-loop,不用設local,eg, forvalues i=1/9 {}09/30 22:10
17F:→ evilove: 應該是 1/809/30 22:10
18F:→ steven225: 我有試著用forvalue寫,但是會出現weights not allowed09/30 23:03
20F:→ steven225: 不知道是那個環節出錯?09/30 23:03
21F:→ steven225: 哦哦。我用forvalue寫出來了
※ 編輯: steven225 (123.194.65.43 臺灣), 10/01/2020 00:12:09
23F:→ steven225: 但上圖的寫法裡,為什麼上方的不行,但下方的可以?10/01 00:13
24F:→ steven225: in後面不能放 1+`i'嗎?10/01 00:14
25F:→ steven225: 有試過放(1+`i')或[1+`i'],但都不行10/01 00:15
26F:→ steven225: 想請教為什麼?感謝10/01 00:15
27F:推 evilove: 建議你直接舉例說明你想完成甚麼目的 var[num]不是stata10/01 00:15
28F:→ evilove: 的指令,stata只有在處理matrix時才會這樣寫10/01 00:16
※ 編輯: steven225 (223.136.23.142 臺灣), 10/01/2020 00:31:07
29F:→ steven225: 已更新原文內容舉列,感謝 10/01 00:31
30F:推 riirene: 不用loop, 直接用sum()函數 10/01 08:47
31F:→ riirene: generate s_amt = sum(t_amt) 10/01 08:47
32F:→ steven225: 原來sum可以這樣用,受教了,感謝 10/01 09:36
33F:推 bearching: local應該是宣告一個區域變數,相對的global就是宣告 10/05 12:06
34F:→ bearching: 全域變數,變數除了generate也可以搜尋egen 你會發現 10/05 12:06
35F:→ bearching: 新天地~ 10/05 12:07