作者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/cn.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