Stata sum by group

时间:2015-08-03 15:26:23

标签: sum grouping stata

我得到的数据是这样的:

tinh   huyen   xa   diaban   hoso   fee1   fee2   income
1      1       4    12        13     100    200
1      1       4    12        13     120    150
1      1       5    11        14     130    140
1      1       5    11        14     100    100
1      1       6    14        20     130    140

所以我想将费用1和费用2((tinh,huyen,xa,diaban,hoso)加入收入栏。

然后结果假设如下:

tinh   huyen   xa   diaban   hoso   fee1   fee2   income
1      1       4    12        13     100    200   570(100 + 200 + 120 + 150)
1      1       4    12        13     120    150   570(100 + 200 + 120 + 150)
1      1       5    11        14     130    140   470(130 + 140 + 100 + 100)
1      1       5    11        14     100    100   470(130 + 140 + 100 + 100)
1      1       6    14        20     130    140   270(130 + 140)

请帮我这个表达。 任何解决方案将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

我确定其他人会有更聪明的解决方案,但您可以合并egen的{​​{1}}和rowtotal功能来实现这一目标。

total

产生

clear
input tinh   huyen   xa   diaban   hoso   fee1   fee2  
1      1       4    12        13     100    200
1      1       4    12        13     120    150
1      1       5    11        14     130    140
1      1       5    11        14     100    100
1      1       6    14        20     130    140
end

egen sum1 = rowtotal(fee1 fee2)
egen sum2 = total(sum1), by(tinh huyen xa diaban)

li

请注意(根据评论),您可以使用 +---------------------------------------------------------------+ | tinh huyen xa diaban hoso fee1 fee2 sum1 sum2 | |---------------------------------------------------------------| 1. | 1 1 4 12 13 100 200 300 570 | 2. | 1 1 4 12 13 120 150 270 570 | 3. | 1 1 5 11 14 130 140 270 470 | 4. | 1 1 5 11 14 100 100 200 470 | 5. | 1 1 6 14 20 130 140 270 270 | +---------------------------------------------------------------+ 。如果您缺少egen income = total(fee1 + fee2), by(tinh huyen xa diaban)fee1的值,则如果您使用此语法,则必须考虑fee2表达式中的值。