【问题标题】:How to count the number of customer per month in R?如何计算R中每月的客户数量?
【发布时间】:2021-07-14 12:00:44
【问题描述】:

所以我有一张客户表,其各自的日期如下:

ID Date
1 2019-04-17
4 2019-05-12
1 2019-04-25
2 2019-05-19

我只想计算每个月每年有多少客户,如下所示:

Month-Year Count of Customer
Apr-19 2
May-19 2

编辑: 对不起,但我认为我的问题应该更清楚。 同一客户一个月内可出现多次,将被视为同一个月的 2 位客户。我基本上想根据客户ID找到每月的交易次数。

我假设的方法是首先将日期更改为月-年格式?然后我计算每个客户并为每个月分组?但我不确定如何在 R 中执行此操作。谢谢!

【问题讨论】:

  • 请通过粘贴您的数据样本使您的问题可重现:使用dput(head(your_data_sample, n)) 其中n 足以证明问题的数据。这使得其他人可以更轻松地复制数据以测试和验证解决方案。
  • 正如彼得所说:在stackoverflow.com/help/minimal-reproducible-example 中重复发布您的数据。另外:如果您的问题是关于时间和日期的,请查看lubridate 包,它定义了有用的函数,例如monthyear。请参阅此处的备忘单:evoldyn.gitlab.io/evomics-2018/ref-sheets/R_lubridate.pdf 在他们的结果上使用 paste,然后使用 aggregate
  • CRN 客户ID吗?客户一个月只出现一次吗?如果您的预期输出与输入数据框匹配,比较答案会很有帮助。

标签: r


【解决方案1】:

你可以使用count -

library(dplyr)

df %>% count(Month_Year = format(as.Date(Date), '%b-%y'))

#  Month_Year n
#1     Apr-19 2
#2     May-19 2

table 基数 R -

table(format(as.Date(df$Date), '%b-%y'))

#Apr-19 May-19 
#     2      2 

数据

df <- structure(list(ID = c(1L, 4L, 1L, 2L), Date = c("2019-04-17", 
"2019-05-12", "2019-04-25", "2019-05-19")), 
class = "data.frame", row.names = c(NA, -4L))

【讨论】:

    【解决方案2】:

    我们可以使用zoo::as.yearmon

    library(dplyr)
    df %>%
         count(Date = zoo::as.yearmon(Date))
          Date n
    1 Apr 2019 2
    2 May 2019 2
    

    数据

    df <- structure(list(ID = c(1L, 4L, 1L, 2L), Date = c("2019-04-17", 
    "2019-05-12", "2019-04-25", "2019-05-19")), 
    class = "data.frame", row.names = c(NA, -4L))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 2023-01-26
      相关资源
      最近更新 更多