我想通過聚合前一行總和&列總和來獲得列總和&行總和。R:計算列總和和行總和作爲從數據幀的聚合
例如,
我最初的數據幀是:
Flag1 Flag2 Flag3 Type1 Type2 Type3
1 Level1 A FIRST 2 0 0
2 Level1 A SECOND 1 9 0
3 Level1 A THIRD 3 7 0
4 Level1 A FOURTH 9 18 0
5 Level1 A FIFTH 1 22 0
6 Level1 A SIXTH 1 13 0
7 Level1 B FIRST 0 0 0
8 Level1 B SECOND 3 9 0
9 Level1 B THIRD 5 85 0
10 Level1 B FOURTH 4 96 0
11 Level1 B FIFTH 3 40 0
12 Level1 B SIXTH 0 17 0
22 Level2 A FIRST 2 0 0
23 Level2 A SECOND 1 9 0
24 Level2 A THIRD 3 7 0
25 Level2 A FOURTH 9 18 0
26 Level2 A FIFTH 1 22 0
27 Level2 A SIXTH 1 13 0
28 Level2 B FIRST 0 0 0
29 Level2 B SECOND 3 9 0
30 Level2 B THIRD 5 85 0
31 Level2 B FOURTH 4 96 0
32 Level2 B FIFTH 3 40 0
33 Level2 B SIXTH 0 17 0
34 Level3 A FIRST 2 0 0
35 Level3 A SECOND 1 9 0
36 Level3 A THIRD 3 7 0
37 Level3 A FOURTH 9 18 0
38 Level3 A FIFTH 1 22 0
39 Level3 A SIXTH 1 13 0
40 Level3 B FIRST 0 0 0
41 Level3 B SECOND 3 9 0
42 Level3 B THIRD 5 85 0
43 Level3 B FOURTH 4 96 0
44 Level3 B FIFTH 3 40 0
45 Level3 B SIXTH 0 17 0
我期望的結果是:
Flag1 Flag2 Flag3 Type1 Type2 Type3 Sum
1 Level1 A FIRST 2 0 0 2
2 Level1 A SECOND 1 9 0 12
3 Level1 A THIRD 3 7 0 22
4 Level1 A FOURTH 9 18 0 49
5 Level1 A FIFTH 1 22 0 72
6 Level1 A SIXTH 1 13 0 86
7 Level1 B FIRST 0 0 0 0
8 Level1 B SECOND 3 9 0 12
9 Level1 B THIRD 5 85 0 102
10 Level1 B FOURTH 4 96 0 202
11 Level1 B FIFTH 3 40 0 245
12 Level1 B SIXTH 0 17 0 262
13 Level1 (all) FIRST 2 0 0 2
14 Level1 (all) SECOND 4 18 0 24
15 Level1 (all) THIRD 8 92 0 124
16 Level1 (all) FOURTH 13 114 0 251
17 Level1 (all) FIFTH 4 62 0 317
18 Level1 (all) SIXTH 1 30 0 348
19 Level1 A (all) 17 68 0 85
20 Level1 B (all) 15 247 0 262
21 Level1 (all) (all) 32 315 0 347
22 Level2 A FIRST 2 0 0 2
23 Level2 A SECOND 1 9 0 12
24 Level2 A THIRD 3 7 0 22
25 Level2 A FOURTH 9 18 0 49
26 Level2 A FIFTH 1 22 0 72
27 Level2 A SIXTH 1 13 0 86
28 Level2 B FIRST 0 0 0 0
29 Level2 B SECOND 3 9 0 12
30 Level2 B THIRD 5 85 0 102
31 Level2 B FOURTH 4 96 0 202
32 Level2 B FIFTH 3 40 0 245
33 Level2 B SIXTH 0 17 0 262
34 Level2 (all) FIRST 2 0 0 2
35 Level2 (all) SECOND 4 18 0 24
36 Level2 (all) THIRD 8 92 0 124
37 Level2 (all) FOURTH 13 114 0 251
38 Level2 (all) FIFTH 4 62 0 317
39 Level2 (all) SIXTH 1 30 0 348
40 Level2 A (all) 17 68 0 85
41 Level2 B (all) 15 247 0 262
42 Level2 (all) (all) 32 315 0 347
43 Level3 A FIRST 2 0 0 2
44 Level3 A SECOND 1 9 0 12
45 Level3 A THIRD 3 7 0 22
46 Level3 A FOURTH 9 18 0 49
47 Level3 A FIFTH 1 22 0 72
48 Level3 A SIXTH 1 13 0 86
49 Level3 B FIRST 0 0 0 0
50 Level3 B SECOND 3 9 0 12
51 Level3 B THIRD 5 85 0 102
52 Level3 B FOURTH 4 96 0 202
53 Level3 B FIFTH 3 40 0 245
54 Level3 B SIXTH 0 17 0 262
55 Level3 (all) FIRST 2 0 0 2
56 Level3 (all) SECOND 4 18 0 24
57 Level3 (all) THIRD 8 92 0 124
58 Level3 (all) FOURTH 13 114 0 251
59 Level3 (all) FIFTH 4 62 0 317
60 Level3 (all) SIXTH 1 30 0 348
61 Level3 A (all) 17 68 0 85
62 Level3 B (all) 15 247 0 262
63 Level3 (all) (all) 32 315 0 347
64 (all) A FIRST 6 0 0 6
65 (all) A SECOND 9 27 0 42
66 (all) A THIRD 18 48 0 108
67 (all) A FOURTH 45 102 0 255
68 (all) A FIFTH 48 168 0 471
69 (all) A SIXTH 51 207 0 729
70 (all) B FIRST 0 0 0 0
71 (all) B SECOND 9 27 0 36
72 (all) B THIRD 24 282 0 342
73 (all) B FOURTH 36 570 0 948
74 (all) B FIFTH 45 690 0 1683
75 (all) B SIXTH 45 741 0 2469
76 (all) A (all) 51 552 0 1611
77 (all) B (all) 45 2310 0 5478
78 (all) (all) (all) 96 2862 0 7089
感謝
你沒有指定你想要的結果。 – Orbling 2011-05-12 18:28:15
另外,請說明您需要的內容與您之前的問題不同,http://stackoverflow.com/questions/5863456/r-calculating-margins-or-row-col-sums-for-a-data-frame – Aaron 2011-05-12 19:22:13
對此問題不完整表示歉意。在我之前的問題中,我想要的只是簡單的行數。但是在這種情況下,對於標誌2的每個值,我需要每行的總和包括來自該標誌1的前一行的總和。例如,行號3, 級別1第三,行總和爲10,但是我需要將前兩行的行總和加到它上面,總共爲12. 因此對於標誌1和標誌2的每個值,這些rowsums不僅應該添加類型1,2和3的值,還應該添加類型1,2和3的值前一行總和。 – user669815 2011-05-12 19:51:21