user10633371
user10633371

Reputation:

Calculate the sum of a variable

I would like to calculate the sum of variable boasav:

clear

input id boasav
1 2500
1 2900
1 4200
2 5700
2 6100
3 7400
3 7600
3 8300
end

I know that the tabulate command can be used to summarize data but it only counts:

bys id: tab boasav 

-> id = 1

     boasav |      Freq.     Percent        Cum.
------------+-----------------------------------
       2500 |          1       33.33       33.33
       2900 |          1       33.33       66.67
       4200 |          1       33.33      100.00
------------+-----------------------------------
      Total |          3      100.00

-> id = 2

     boasav |      Freq.     Percent        Cum.
------------+-----------------------------------
       5700 |          1       50.00       50.00
       6100 |          1       50.00      100.00
------------+-----------------------------------
      Total |          2      100.00

-> id = 3

     boasav |      Freq.     Percent        Cum.
------------+-----------------------------------
       7400 |          1       33.33       33.33
       7600 |          1       33.33       66.67
       8300 |          1       33.33      100.00
------------+-----------------------------------
      Total |          3      100.00

However, what I want is the following:

1    9600  
2   11800  
3   23300 

Is there a function that can do this in Stata?

Upvotes: 0

Views: 3515

Answers (1)

Nick Cox
Nick Cox

Reputation: 37183

Here are three more.

clear

input id boasav
1 2500
1 2900
1 4200
2 5700
2 6100
3 7400
3 7600
3 8300
end

* Method 4: use summarize 

forval g = 1/3 { 
    su boasav if id == `g', meanonly 
    di "`g'  " %5.0f r(sum) 
} 

1   9600
2  11800
3  23300


* Method 5: tabstat 

tabstat boasav, by(id) stat(sum) 

Summary for variables: boasav
     by categories of: id 

      id |       sum
---------+----------
       1 |      9600
       2 |     11800
       3 |     23300
---------+----------
   Total |     44700
--------------------


* Method 6: use rangestat (SSC) 

rangestat (sum) boasav, int(id 0 0)

tabdisp id, c(boasav_sum)

-------------------------
       id | sum of boasav
----------+--------------
        1 |          9600
        2 |         11800
        3 |         23300
-------------------------

Upvotes: 1

Related Questions