首页 > 解决方案 > 根据月营业额查找月份

问题描述

我似乎陷入了一个非常基本的问题,我知道这很容易,但我无法弄清楚。

所以我的数据有 HireDate 和 TermDate。TermDate 是任何员工的最后一天。

我想做如下:

离开者 = 从 TermDate 获取的当前月份计数

特定月份的营业额 = 本月离职人数 / AVG(上个月和本月的行数)

重现数据

structure(list(HireDate = structure(c(17702, 13242, 16895, 17167, 12335, 13879, 12303, 13745, 14789, 16785, 15390, 17167, 12886, 13472, 15569, 13796, 16811, 11484, 13062, 17592, 16113, 13437, 15614, 17167, 17167, 16251, 17623, 13312, 14165, 17167, 17167, 10695, 15764, 13749, 16801, 17167, 13594, 13874, 17167, 17167, 13157, 17167, 12501, 13243, 12192, 12287, 12965, 13328, 17167, 13343, 17167, 17167, 11839, 17167, 13262, 13326, 14124, 16161, 17167, 17226, 12786, 13823, 13822, 13255, 17704, 17653, 12258, 12769, 13727, 10712, 17400, 13952, 14048, 14333, 17233, 17690, 13108, 13383, 13517, 13829, 17213, 13696, 16741, 17167, 17241, 12198, 14018, 12902, 16801, 17167, 17591, 12843, 13627, 14553, 15593, 16097, 16801, 13075, 13529, 17167), class = "Date"), TermDate = structure(c(NA, 13439, 17712, NA, 12880, 15408, 12877, 16493, 17135, 16944, 17135, NA, 14054, 15670, 17531, 14327, NA, 13889, NA, NA, 16741, 17135, 17620, 17620, 17354, 17316, NA, 13312, 17166, NA, NA, 15705, NA, 15112, NA, NA, 15705, 13970, 17655, NA, 13612, NA, 15418, 15917, 15705, NA, 14274, 13449, NA, 13559, 17417, NA, 14400, NA, NA, 14334, 14813, 16343, 17703, NA, 12824, 15711, 15411, 14484, NA, NA, NA, 15309, 16493, 17197, NA, 14911, 16957, 15882, NA, NA, 14435, 13768, 13517, 14907, NA, 17284, NA, NA, NA, 12772, 17166, NA, 16881, 17439, NA, 14944, NA, 15028, 16581, 16778, NA, 13788, 14064, 17620), class = "Date")), row.names = 14296:14395, class = "data.frame")

标签: rdplyr

解决方案


library(dplyr)
df %>% 
  mutate(leavemonth=strftime(TermDate,format="%m-%Y")) %>% 
  group_by(leavemonth) %>% 
  summarize(n=n())

# A tibble: 51 x 2
   leavemonth     n
   <chr>      <int>
 1 01-2007        1
 2 01-2008        1
 3 01-2009        1
 4 01-2013        1
 5 01-2017        1
 6 02-2005        1
 7 02-2007        1
 8 02-2011        1
 9 02-2015        2
10 03-2009        2
# ... with 41 more rows

我为每行的终止日期的月份-年份创建一个具有唯一标识符的列,然后使用summarize.

如果您只想添加n到现有表中,我们可以将汇总替换为add_count

df %>% 
  mutate(leavemonth=strftime(TermDate,format="%m-%Y")) %>% 
  add_count(leavemonth)

# A tibble: 100 x 4
   HireDate   TermDate   leavemonth     n
   <date>     <date>     <chr>      <int>
 1 2018-06-20 NA         NA            34
 2 2006-04-04 2006-10-18 10-2006        2
 3 2016-04-04 2018-06-30 06-2018        2
 4 2017-01-01 NA         NA            34
 5 2003-10-10 2005-04-07 04-2005        2
 6 2008-01-01 2012-03-09 03-2012        3
 7 2003-09-08 2005-04-04 04-2005        2
 8 2007-08-20 2015-02-27 02-2015        2
 9 2010-06-29 2016-11-30 11-2016        3
10 2015-12-16 2016-05-23 05-2016        1
# ... with 90 more rows

推荐阅读