问题描述
我对此有类似的问题... Relative frequencies / proportions with dplyr,但它对我不起作用。
我只是想在新的一列中列出每个年龄段相对于该年所有年龄段总数的比例。
这是我的示例数据...
> structure(list(Year = c("2012","2016","2013","2015","2012","2018","2011","2014","2010","2017","2014"),Age = structure(c(6L,8L,2L,11L,7L,3L,6L,9L,5L,1L,6L),.Label = c("0","1","2","3","4","5","6","7","8","9","10"),class = "factor"),n = c(3,6,3,11,1,2,8,4),id = c("Adult","Adult","Adult")),row.names = c(NA,-15L),class = "data.frame")
Year Age n id
1 2012 5 3 Adult
2 2016 7 6 Adult
3 2013 1 3 Adult
4 2015 1 11 Adult
5 2012 10 1 Adult
6 2018 7 3 Adult
7 2013 6 2 Adult
8 2011 2 3 Adult
9 2016 5 8 Adult
10 2018 8 3 Adult
11 2011 5 2 Adult
12 2014 1 1 Adult
13 2010 4 3 Adult
14 2017 0 8 Adult
15 2014 5 4 Adult
希望的结果是...
Year Age n id prop
1 2012 5 3 Adult 0.75
2 2016 7 6 Adult 0.43
3 2013 1 3 Adult 0.60
4 2015 1 11 Adult 1.00
5 2012 10 1 Adult 0.25
6 2018 7 3 Adult 0.50
7 2013 6 2 Adult 0.40
8 2011 2 3 Adult 0.60
9 2016 5 8 Adult 0.57
10 2018 8 3 Adult 0.50
11 2011 5 2 Adult 0.40
12 2014 1 1 Adult 0.20
13 2010 4 3 Adult 1.00
14 2017 0 8 Adult 1.00
15 2014 5 4 Adult 0.80
df.prop <- df %>%
group_by(Age,Year) %>%
mutate(prop = n / sum(n))
Year Age n id prop
<chr> <fct> <dbl> <chr> <dbl>
1 2012 5 3 Adult 1
2 2016 7 6 Adult 1
3 2013 1 3 Adult 1
4 2015 1 11 Adult 1
5 2012 10 1 Adult 1
6 2018 7 3 Adult 1
7 2013 6 2 Adult 1
8 2011 2 3 Adult 1
9 2016 5 8 Adult 1
10 2018 8 3 Adult 1
11 2011 5 2 Adult 1
12 2014 1 1 Adult 1
13 2010 4 3 Adult 1
14 2017 0 8 Adult 1
15 2014 5 4 Adult 1
我也尝试过...
df %>%
group_by(Year,Age) %>%
summarise(n = n()) %>%
mutate(prop = n / sum(n))
Age Year n
<fct> <chr> <int>
1 0 2017 1
2 1 2013 1
3 1 2014 1
4 1 2015 1
5 2 2011 1
6 4 2010 1
7 5 2011 1
8 5 2012 1
9 5 2014 1
10 5 2016 1
11 6 2013 1
12 7 2016 1
13 7 2018 1
14 8 2018 1
15 10 2012 1
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)