Stata 通过将列除以最后一行中的观察值来创建新变量

Stata 通过将列除以最后一行中的观察值来创建新变量,stata,Stata,我想创建一个新变量,比如cheese2,它接受cheese,并将每个变量除以最后一个观察值(2921333) 我还希望同时对多列执行此操作,即将多列除以数据集的最后一行 在Stata术语中 通过将列除以最后一行中的观察值来创建新变量 变成 通过将变量除以上一次观察中的值来创建新变量 这样一个问题表明,您正在以电子表格的方式存储上次观察的总数。这种做法无疑对你的要求很方便,但它产生了将最后一次观察排除在几乎所有其他操作之外的义务,并保持完全相同的排序顺序,因此通常被认为是一个坏主意 尽管如此 ge

我想创建一个新变量,比如cheese2,它接受cheese,并将每个变量除以最后一个观察值(2921333)

我还希望同时对多列执行此操作,即将多列除以数据集的最后一行

在Stata术语中

通过将列除以最后一行中的观察值来创建新变量

变成

通过将变量除以上一次观察中的值来创建新变量

这样一个问题表明,您正在以电子表格的方式存储上次观察的总数。这种做法无疑对你的要求很方便,但它产生了将最后一次观察排除在几乎所有其他操作之外的义务,并保持完全相同的排序顺序,因此通常被认为是一个坏主意

尽管如此

gen cheese2 = cheese/cheese[_N] 
就是你所要求的,在几个变量上的循环可能是

foreach v of var frog newt toad lizard dragon { 
       gen `v'2 = `v'/`v'[_N]
}

另请参见foreach的帮助

太好了,谢谢你的详细解释和代码。
foreach v of var frog newt toad lizard dragon { 
       gen `v'2 = `v'/`v'[_N]
}