我想创建一个新变量,比如 cheese2 ,它采用 cheese 并将每个变量除以最后一次观察(2921333)。
+----------+
| cheese |
|----------|
1. | 3060000 |
2. | 840333.3 |
3. | 1839667 |
4. | 1.17e+07 |
5. | 1374000 |
|----------|
6. | 2092333 |
7. | 341000 |
8. | 3149000 |
9. | 3557667 |
10. | 590666.7 |
|----------|
11. | 8937000 |
12. | 4142000 |
13. | 2624000 |
14. | 1973667 |
15. | 2921333 |
我还想一次为多个列执行此操作,即将多个列除以数据集的最后一行。
答案 0 :(得分:3)
在Stata术语中,
通过将列除以最后一行中的观察值来创建新变量
成为
通过将变量除以上次观察中的值来创建新变量。
这样的问题表明您在最后一次观察,电子表格样式中存储总计。这样的做法无疑对你提出的问题很方便,但是它产生的义务是将几乎所有其他操作中的最后一个观察排除在外并保持完全相同的排序顺序,因此通常被认为是一个坏主意。
所有这一切,
gen cheese2 = cheese/cheese[_N]
是你要求的,并且几个变量的循环可能是
foreach v of var frog newt toad lizard dragon {
gen `v'2 = `v'/`v'[_N]
}
另请参阅foreach
的帮助。