按行对多列求和(在 Stata 中)

Sum across multiple columns by row (in Stata)

我正在尝试对每行的多个列(变量)的值求和,并将求和值存储为新列。但是,我的数据(一个 Stata 文件)有 500 多个变量,每列都由一些缩写命名,没有任何可识别的前缀模式(另外,前几个变量是名称和 ID),因此使用 varlistrowtotal() 函数内,也不使用通配符方法 rowtotal(prefix*).

我想知道是否有一种方法可以按列范围对 Stata 数据进行子集化,并以类似 R 的方式在 tjose 列上应用 rowtotal()(例如,df[, 3:500]),因为我知道我想总结的列范围。像这样

year    state   aalco   aata    acdt    acpeu
2000    usa 0   0   -1  0
2001    usa 0   0   -1  0
2002    usa 0   0   -1  0
2003    usa 0   0   -1  0
2004    usa 0   0   -1  0
2005    usa 0   0   -1  0
2006    usa 0   0   -1  0
2007    usa 0   0   -1  0
2008    usa 0   0   -1  0
2009    usa 0   0   -1  0
2010    usa 0   0   -1  0
2011    usa 0   0   -1  0
2012    usa 0   0   -1  0

我在这里附上了我的数据 link,希望有人能给我一些提示 https://www.dropbox.com/s/fy5zpmf2tdlf3wx/dyadic_format3.dta?dl=1

我参考了这些帖子 (here, and here),但它们并没有完全解决我的难题。

为了更好地说明,使用稍微改动过的示例,以下对我有用:

clear

input year  str3 state   aalco   aata    acdt    acpeu
2000    usa 0   3   -1  0
2001    usa 0   0   -1  0
2002    usa 0   0   -1  0
2003    usa 0   0   -1  0
2004    usa 0   7   -1  0
2005    usa 0   0   -1  0
2006    usa 0   0   -1  0
2007    usa 0   0   -1  0
2008    usa 0   0   -1  0
2009    usa 0   0   -1  0
2010    usa 0   0   -1  1
2011    usa 0   0   -1  9
2012    usa 0   0   -1  0
end

ds year state, not
putmata data = (`r(varlist)'), view replace
mata: st_store((1::13), st_addvar("double","foo"), rowsum(data[.,2..4]))

结果:

list

     +--------------------------------------------------+
     | year   state   aalco   aata   acdt   acpeu   foo |
     |--------------------------------------------------|
  1. | 2000     usa       0      3     -1       0     2 |
  2. | 2001     usa       0      0     -1       0    -1 |
  3. | 2002     usa       0      0     -1       0    -1 |
  4. | 2003     usa       0      0     -1       0    -1 |
  5. | 2004     usa       0      7     -1       0     6 |
     |--------------------------------------------------|
  6. | 2005     usa       0      0     -1       0    -1 |
  7. | 2006     usa       0      0     -1       0    -1 |
  8. | 2007     usa       0      0     -1       0    -1 |
  9. | 2008     usa       0      0     -1       0    -1 |
 10. | 2009     usa       0      0     -1       0    -1 |
     |--------------------------------------------------|
 11. | 2010     usa       0      0     -1       1     0 |
 12. | 2011     usa       0      0     -1       9     8 |
 13. | 2012     usa       0      0     -1       0    -1 |
     +--------------------------------------------------+

findnameStata Journal 20(2) 2020 中更新有一些按列号识别变量的功能。

. sysuse auto, clear
(1978 Automobile Data)

. findname, col(7/12)
weight        length        turn          displacement  gear_ratio    foreign

. findname, col(1/6)
make      price     mpg       rep78     headroom  trunk