R - 每个ID和日期的计数观察[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R - 每个ID和日期的计数观察[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我有一个包含2列的索赔文件:“客户ID”,“声明日期”。

我希望看到(并统计)客户是否在X时间内涉及多起事故(假设一年)。

我的数据如下:

Customer_Id     Declaration_date   
001             12/10/2017
001             12/10/2017
002             24/10/2017
003             25/10/2017
004             25/10/2017
001             05/12/2017
006             07/12/2017

这里是:

D <- data.frame(Customer_Id = c(001, 001, 002, 003, 004, 001, 006),
            Declaration_date = as.Date(c("12/10/2017", "12/10/2017", "24/10/2017", "25/10/2017", "25/10/2017", "05/12/2017", "07/12/2017"), format = "%d/%m/%Y"))

在这里,我们可以看到客户“001”在12月10日有两个索赔,但在05/12也有一个索赔。因此,我想要的是第三栏,根据客户自2016年1月1日起的日期计算不同索赔的数量。输出应如下所示:

Customer_Id     Declaration_date     Number of claims 
001             12/10/2017           2
001             12/10/2017           2
002             24/10/2017           1
003             25/10/2017           1
004             25/10/2017           1
001             05/12/2017           2
006             07/12/2017           1

请注意,在同一日期拥有多次客户ID不应与“索赔数量”相加。在我的例子中,客户001有“2”索赔,因为他在12月10日有一个(或多个)索赔,但也在05/12。

任何帮助将非常感谢。

非常感谢,

答案

我们可以使用avebase R通过获取'Declaration_date'的lengthofunique`元素来创建一个列

with(D, ave(as.numeric(Declaration_date), Customer_Id, FUN = function(x) length(unique(x))))

或者与dplyr

library(dplyr)
D %>%
  group_by(Customer_Id) %>%
  mutate(Number_of_claims = n_distinct(Declaration_date))

或者使用data.table

library(data.table)
setDT(D)[,  Number_of_claims := uniqueN(Declaration_date), Customer_Id]

以上是关于R - 每个ID和日期的计数观察[重复]的主要内容,如果未能解决你的问题,请参考以下文章

重复观察平均每月

查找数据框中每个日期的计数[重复]

每个 ID 按日期选择观察

无法在每个活动上解析符号“R”[重复]

如何在日期时间 Python 中获取值计数

SQL / Postgres join where子句