如何解决计算增长率,按类型分组使用R
我有一个数据集z,我希望按类型计算增长量:
location size type date
ny 5 hello 10/01/2020
ny 7 ai 10/02/2020
ny 8 ai 10/03/2020
ny 6 hello 10/04/2020
ca 15 cool 10/05/2020
ca 10 name 10/06/2020
ca 5 name 10/07/2020
ca 16 cool 10/08/2020
所需的输出
location type increase percent_increase start_date end_date
ca cool 1 6.67% 10/05/2020 10/08/2020
ca name -5 -50% 10/6/2020 10/7/2020
ny hello 1 20% 10/01/2020 10/4/2020
ny ai 1 14.28% 10/2/2020 10/3/2020
这就是我在做什么:
library(tidyverse)
z %>%
group_by(type,location) %>%
mutate(percent_increase = (size/lead(size) - 1) * 100)
我没有得到想要的输出。感谢您的协助。
解决方法
要获得所需的结果,您需要在mutate
行中进行其他计算:
我还添加了filter
,以删除变量NA
中带有percent_increase
的所有结果。
最后添加`arrange'以按字母顺序对位置进行排序,以匹配请求的输出顺序。
代码
z%>% group_by(类型,位置)%>% 变异( 增加=(引线(尺寸)-尺寸), percent_increase =(增加/大小)* 100, start_date =日期, end_date =线索(日期))%>% filter(!is.na(percent_increase))%>% 安排(位置)
输出
# A tibble: 4 x 8
# Groups: type,location [4]
location size type date increase percent_increase start_date end_date
<chr> <int> <chr> <chr> <int> <dbl> <chr> <chr>
1 ca 15 cool 10/05/2020 1 6.67 10/05/2020 10/08/2020
2 ca 10 name 10/06/2020 -5 -50 10/06/2020 10/07/2020
3 ny 5 hello 10/01/2020 1 20 10/01/2020 10/04/2020
4 ny 7 ai 10/02/2020 1 14.3 10/02/2020 10/03/2020
输入
z <- structure(list(location = c("ny","ny","ca","ca"),size = c(5L,7L,8L,6L,15L,10L,5L,16L),type = c("hello","ai","hello","cool","name","cool"),date = c("10/01/2020","10/02/2020","10/03/2020","10/04/2020","10/05/2020","10/06/2020","10/07/2020","10/08/2020")),class = "data.frame",row.names = c(NA,-8L))
,
您缺少按日期组织的整理功能
像这样:
z %>%
group_by(type,location) %>%
arrange(date) %>%
mutate(percent_increase = (size/lead(size) - 1) * 100)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。