首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按月计算R中的变化

按月计算R中的变化
EN

Stack Overflow用户
提问于 2016-06-27 13:38:20
回答 3查看 2K关注 0票数 1

我有一张列有客户姓名、付款月份和支出金额的表格,如下所示:

代码语言:javascript
运行
复制
c_name  p_month  spend
  ABC    201401   100
  ABC    201402   150
  ABC    201403   230
  DEF    201401   110
  DEF    201402   190
  DEF    201403   300

我想计算每个客户的月变化(mom_change)和月对月百分比变化(mom_per_change)。预期的产出将是-

代码语言:javascript
运行
复制
c_name  p_month  spend  mom_change  mom_per_change
  ABC    201401   100     Blank         Blank
  ABC    201402   150      50            0.5
  ABC    201403   230      80           0.533
  DEF    201401   110     Blank         Blank
  DEF    201402   190      80           0.727
  DEF    201403   300     110           0.578

我尝试使用diff分别计算每个客户端的更改。问题是,大约有10000个客户端,使用一个循环计算它需要很长时间。任何帮助都是非常感谢的。谢谢。

EN

Stack Overflow用户

发布于 2016-06-27 13:50:25

下面是一个使用data.table的解决方案,其中blankNAs替换:

代码语言:javascript
运行
复制
library(data.table)
setDT(df)[, `:=` (mom_change = c(NA, diff(spend)), 
                  mom_per_change = round(c(NA, diff(spend))/shift(spend), 3)), .(c_name)]
df
   c_name p_month spend mom_change mom_per_change
1:    ABC  201401   100         NA             NA
2:    ABC  201402   150         50          0.500
3:    ABC  201403   230         80          0.533
4:    DEF  201401   110         NA             NA
5:    DEF  201402   190         80          0.727
6:    DEF  201403   300        110          0.579
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38055475

复制
相关文章

相似问题

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