我一直在使用这个来获得两组每个班级的计数比例但是没有得到正确的结果。
必须是每个密度内vegclas的比例,而不是总数的总比例。
veg %>%
group_by(density,vegclas) %>%
summarise(total.count=n(),
avg=total.count/count(veg)*100)
结果:
Source: local data frame [12 x 4]
Groups: density [?]
density vegclas total.count avg
(fctr) (fctr) (int) (chr)
1 H 1 1201 <dbl[1]>
2 H 2 1258 <dbl[1]>
3 H 3 162 <dbl[1]>
4 H 4 4745 <dbl[1]>
5 H 5 2807 <dbl[1]>
6 H 6 114 <dbl[1]>
7 L 1 1109 <dbl[1]>
8 L 2 469 <dbl[1]>
9 L 3 56 <dbl[1]>
10 L 4 1701 <dbl[1]>
11 L 5 691 <dbl[1]>
12 L 6 204 <dbl[1]>
编辑:
使用长度(veg)给了我这个:
density vegclas total.count avg
(fctr) (fctr) (int) (dbl)
1 H 1 1201 7506.25
2 H 2 1258 7862.50
3 H 3 162 1012.50
4 H 4 4745 29656.25
5 H 5 2807 17543.75
6 H 6 114 712.50
7 L 1 1109 6931.25
8 L 2 469 2931.25
9 L 3 56 350.00
10 L 4 1701 10631.25
11 L 5 691 4318.75
12 L 6 204 1275.00
答案 0 :(得分:0)
由于缺少reproducible example,我使用mtcars
数据集。要获得cyl
(在您的案例中为vegclas
)的每个级别gear
(density
)的每个级别的百分比,您可以执行以下操作:
mtcars %>%
group_by(gear) %>%
mutate(
n.gear=n()
) %>%
group_by(gear, cyl) %>%
summarise(
n = n(),
percent = n / unique(n.gear) * 100
)
请注意,每个等级的百分比加起来为100。
gear cyl n percent
(dbl) (dbl) (int) (dbl)
1 3 4 1 6.666667
2 3 6 2 13.333333
3 3 8 12 80.000000
4 4 4 8 66.666667
5 4 6 4 33.333333
6 5 4 2 40.000000
7 5 6 1 20.000000
8 5 8 2 40.000000