首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只保留连续季度的观察结果

只保留连续季度的观察结果
EN

Stack Overflow用户
提问于 2018-08-20 20:50:40
回答 3查看 54关注 0票数 1

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

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

代码语言:javascript
复制
df <- (...)   
a = rle(sort(df$cert))    
b = data.frame(id=a$values, n=a$lengths)   
c = subset(b, n==9)

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-20 21:04:07

一种选择是使用group_by进行n_distinct,按'id‘分组,检查'qtr’中不同元素的数量是否为9,并对那些'id's行执行filter操作

代码语言:javascript
复制
library(dplyr)
df %>%
   group_by(id) %>% 
   filter(n_distinct(qtr) ==9)
票数 2
EN

Stack Overflow用户

发布于 2018-08-20 20:57:41

代码语言:javascript
复制
library(tidyverse)
df<-data.frame(id=rep(1:4,times=9),
               qtr=rep(1:9,each=4))

df%>%
  filter(id %in% (df%>%
                 count(id)%>%
                  filter(n>8)%>%.$id))
票数 1
EN

Stack Overflow用户

发布于 2018-08-20 20:59:45

生成了一个示例。使用rowSums!is.na计算所有9列的行数和值。

代码语言:javascript
复制
a[rowSums(!is.na(a))==9,]

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,]    1    4    7   10   13   16   19   22   25
[2,]    3    6    9   12   15   18   21   24   27

使用的数据。

代码语言:javascript
复制
a <- matrix(1:27, ncol=9, nrow=3)
a[2,2] <- NA
a

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,]    1    4    7   10   13   16   19   22   25
[2,]    2   NA    8   11   14   17   20   23   26
[3,]    3    6    9   12   15   18   21   24   27
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51931155

复制
相关文章

相似问题

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