首页 > 解决方案 > 只保留连续季度的观察结果

问题描述

我目前正在查看连续 9 个季度的银行数据。我现在只想保留那些我拥有所有 9 个季度数据的银行。每家银行都有一个唯一的认证 ID。如何使用 ID 进行过滤并仅保留具有 9 个连续观察值的银行?

也许这样做的一种方法是计算认证 ID (cert) 出现的频率并仅保留具有 9 个观察值的那些?所以这就是我尝试的:

df <- (...)   
a = rle(sort(df$cert))    
b = data.frame(id=a$values, n=a$lengths)   
c = subset(b, n==9)

我不确定这是否正确,因为我正在尝试重现研究论文的结果,但在此步骤之后数字不再匹配。

标签: r

解决方案


一种选择是n_distinctgroup_by按“id”分组,检查“qtr”中不同元素的数量是否为 9 以及filter那些“id”行

library(dplyr)
df %>%
   group_by(id) %>% 
   filter(n_distinct(qtr) ==9)

推荐阅读