我正在寻找一些R代码,可以产生与SAS中的proc summary相同的输出结果。
我查看了这个帖子,其中有类似的问题:R: calculating column sums & row sums as an aggregation from a dataframe,但我的问题略有不同,因为我不想跨列求和,而是要跨行求和。
我的数据结构如下所示:
我希望结果看起来像这样,其中Sum可以是例如type1的总和。
在 SAS 中,可以轻松使用以下代码实现:
这将在所有级别中创建所有不同的小计。(而“nway”语句只会输出数据的最低级别)。我似乎找不到任何像这样简单的R代码?你能帮帮我吗?实际数据中有7个维度,因此硬编码的方法不是选项。如果上述内容不清楚,请提出详细问题。祝好。
我查看了这个帖子,其中有类似的问题:R: calculating column sums & row sums as an aggregation from a dataframe,但我的问题略有不同,因为我不想跨列求和,而是要跨行求和。
我的数据结构如下所示:
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
我希望结果看起来像这样,其中Sum可以是例如type1的总和。
Flag1 Flag2 Flag3 Sum
1 Level1 A FIRST
2 Level1 A SECOND
3 Level1 A THIRD
4 Level1 A FOURTH
5 Level1 A FIFTH
6 Level1 A SIXTH
7 Level1 B FIRST
8 Level1 B SECOND
9 Level1 B THIRD
10 Level1 B FOURTH
11 Level1 B FIFTH
12 Level1 B SIXTH
13 Level1 (all) FIRST
14 Level1 (all) SECOND
15 Level1 (all) THIRD
16 Level1 (all) FOURTH
17 Level1 (all) FIFTH
18 Level1 (all) SIXTH
19 Level1 A (all)
20 Level1 B (all)
21 Level1 (all) (all)
22 Level2 A FIRST
23 Level2 A SECOND
24 Level2 A THIRD
25 Level2 A FOURTH
26 Level2 A FIFTH
27 Level2 A SIXTH
28 Level2 B FIRST
29 Level2 B SECOND
30 Level2 B THIRD
31 Level2 B FOURTH
32 Level2 B FIFTH
33 Level2 B SIXTH
34 Level2 (all) FIRST
35 Level2 (all) SECOND
36 Level2 (all) THIRD
37 Level2 (all) FOURTH
38 Level2 (all) FIFTH
39 Level2 (all) SIXTH
40 Level2 A (all)
41 Level2 B (all)
42 Level2 (all) (all)
43 Level3 A FIRST
44 Level3 A SECOND
45 Level3 A THIRD
46 Level3 A FOURTH
47 Level3 A FIFTH
48 Level3 A SIXTH
49 Level3 B FIRST
50 Level3 B SECOND
51 Level3 B THIRD
52 Level3 B FOURTH
53 Level3 B FIFTH
54 Level3 B SIXTH
55 Level3 (all) FIRST
56 Level3 (all) SECOND
57 Level3 (all) THIRD
58 Level3 (all) FOURTH
59 Level3 (all) FIFTH
60 Level3 (all) SIXTH
61 Level3 A (all)
62 Level3 B (all)
63 Level3 (all) (all)
64 (all) A FIRST
65 (all) A SECOND
66 (all) A THIRD
67 (all) A FOURTH
68 (all) A FIFTH
69 (all) A SIXTH
70 (all) B FIRST
71 (all) B SECOND
72 (all) B THIRD
73 (all) B FOURTH
74 (all) B FIFTH
75 (all) B SIXTH
76 (all) A (all)
77 (all) B (all)
78 (all) (all) (all)
在 SAS 中,可以轻松使用以下代码实现:
PROC SUMMARY data=test;
class Flag1 Flag2 Flag3;
var Type1;
output=final_data Sum=sum(Type1);
run;
这将在所有级别中创建所有不同的小计。(而“nway”语句只会输出数据的最低级别)。我似乎找不到任何像这样简单的R代码?你能帮帮我吗?实际数据中有7个维度,因此硬编码的方法不是选项。如果上述内容不清楚,请提出详细问题。祝好。
addmargins
)。 - r2evanslibrary(mosaic)
和favstats(x, data=dataset_name)
吗? - Schilker