首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算增长增长,按类型分组(使用R)

计算增长增长,按类型分组(使用R)
EN

Stack Overflow用户
提问于 2020-11-03 03:23:20
回答 2查看 103关注 0票数 1

我有一个数据集z,我希望按以下类型计算增长增长:

代码语言:javascript
复制
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

期望输出

代码语言:javascript
复制
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

这就是我要做的:

代码语言:javascript
复制
library(tidyverse)
z %>%
group_by(type, location) %>% 
mutate(percent_increase = (size/lead(size) - 1) * 100)

我没有得到我想要的输出。如能提供任何协助,我们将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-03 04:03:50

要获得所需的结果,需要在mutate行中进行不同的计算:

我还添加了一个filter来删除NApercent_increase变量的任何结果。

最后,添加‘arrange’按位置按字母顺序排序,以匹配与请求输出相同的顺序。

Z %>% group_by(类型,位置) %>%变异(增加=(铅(大小)-大小),percent_increase =(增大/大小)* 100,start_date =日期,end_date =铅(日期) %>%过滤器(!is.na(Percent_increase)) %>%排列(位置)

输出

代码语言:javascript
复制
# 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

输入

代码语言:javascript
复制
z <- structure(list(location = c("ny", "ny", "ny", "ny", "ca", "ca", 
"ca", "ca"), size = c(5L, 7L, 8L, 6L, 15L, 10L, 5L, 16L), type = c("hello", 
"ai", "ai", "hello", "cool", "name", "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))
票数 3
EN

Stack Overflow用户

发布于 2020-11-03 03:58:17

您缺少按日期组织的排列功能

就像这样:

代码语言:javascript
复制
z %>%
group_by(type, location) %>% 
arrange(date) %>%
mutate(percent_increase = (size/lead(size) - 1) * 100)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64656384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档