我不知道如何解释我的问题,但是我想总结distance
类别,并获取每月每个距离的百分比。在我的表中,1周是100%,现在我想计算该月的周数,但要使用周中的百分比。
类似于本月的总和(百分比)/周数
这就是我所拥有的:
year month year_week distance object_remarks weeksum percent
1 2017 05 2017_21 15 ctenolabrus_rupestris 3 0.75
2 2017 05 2017_21 10 ctenolabrus_rupestris 1 0.25
3 2017 05 2017_22 5 ctenolabrus_rupestris 5 0.833
4 2017 05 2017_22 0 ctenolabrus_rupestris 1 0.167
5 2017 06 2017_22 0 ctenolabrus_rupestris 9 1
6 2017 06 2017_23 20 ctenolabrus_rupestris 6 0.545
7 2017 06 2017_23 0 ctenolabrus_rupestris 5 0.455
我想要这样的输出:
year month distance object_remarks weeksum percent percent_month
1 2017 05 15 ctenolabrus_rupestris 3 0.75 0.375
2 2017 05 10 ctenolabrus_rupestris 1 0.25 0.1225
3 2017 05 5 ctenolabrus_rupestris 5 0.833 0.4165
4 2017 05 0 ctenolabrus_rupestris 1 0.167 0.0835
5 2017 06 0 ctenolabrus_rupestris 14 1.455 0.7275
6 2017 06 20 ctenolabrus_rupestris 6 0.545 0.2775
非常感谢!
答案 0 :(得分:0)
您可能需要两次使用group_by()
。
df %>%
select(-year_week) %>%
group_by(month, distance) %>%
mutate(percent = sum(percent), weeksum = sum(weeksum)) %>%
distinct %>%
group_by(month) %>%
mutate(percent_month = percent/sum(percent))
# A tibble: 6 x 7
# Groups: month [2]
# year month distance object_remarks weeksum percent percent_month
# <int> <int> <int> <chr> <int> <dbl> <dbl>
# 1 2017 5 15 ctenolabrus_rupestris 3 0.75 0.375
# 2 2017 5 10 ctenolabrus_rupestris 1 0.25 0.125
# 3 2017 5 5 ctenolabrus_rupestris 5 0.833 0.416
# 4 2017 5 0 ctenolabrus_rupestris 1 0.167 0.0835
# 5 2017 6 0 ctenolabrus_rupestris 14 1.46 0.728
# 6 2017 6 20 ctenolabrus_rupestris 6 0.545 0.272
答案 1 :(得分:0)
不起作用。 这就是我得到的:
year_week year month distance object_remarks weeksum percent percent_month
<chr> <chr> <chr> <fct> <fct> <dbl> <dbl> <dbl>
1 2017_21 2017 05 15 ctenolabrus_rupestr… 3 0.75 0.0672
2 2017_21 2017 05 10 ctenolabrus_rupestr… 1 0.25 0.0224
3 2017_22 2017 05 5 ctenolabrus_rupestr… 6 1.83 0.164
4 2017_22 2017 05 0 ctenolabrus_rupestr… 5 2.17 0.194
5 2017_22 2017 06 0 ctenolabrus_rupestr… 21 2.2 0.117
6 2017_23 2017 06 20 ctenolabrus_rupestr… 9 0.970 0.0515
7 2017_23 2017 06 0 ctenolabrus_rupestr… 21 2.2 0.117
答案 2 :(得分:0)
R以某种方式计算出%_month,除以所有月份的总和,不只是所需月份的数字。
所以我做到了
week_perc$year_week <- NULL
week_perc$month <- as.integer(week_perc$month)
week_perc %>% group_by(month, distance) %>%
mutate(percent = sum(percent), weeksum = sum(weeksum)) %>%
distinct %>%
group_by(month) %>%
mutate(percent_month = percent/sum(month))
得到这个
year month distance object_remarks weeksum percent percent_month
<chr> <int> <chr> <fct> <dbl> <dbl> <dbl>
1 2017 5 10 ctenolabrus_rupestris 1 0.25 0.00833
2 2017 5 15 ctenolabrus_rupestris 3 0.75 0.025
3 2017 5 0 ctenolabrus_rupestris 5 2.17 0.0722
4 2017 5 5 ctenolabrus_rupestris 6 1.83 0.0611
5 2017 6 0 ctenolabrus_rupestris 21 2.2 0.0524
6 2017 6 20 ctenolabrus_rupestris 9 0.970 0.0231
我尝试了不同的方法,但不确定自己做错了什么。说我的数据中有以下月份:05-2017,06-2017,07-2017,08-2017,05-2018,06-2018,07-2018,08-2019,09-2018。
每月两次。但这不应该是问题。