簡體   English   中英

只保留不間斷的組

[英]keeping only non-breaking groups

我有一種越來越多地排序的時間序列。 第一年沒有數據但在無數據季后定期有記錄的一些觀測值。 但一些開始有數據的團體,再次打破記錄數據。

要理解,我制作了一個代表這種情況的虛擬數據框;

set.seed(1453)

data.frame(id = rep(10:15,4)) %>%
group_by(id) %>%
mutate(year=2012:2015) %>%
arrange(year,.by_group = T) %>%
mutate(some_column = sample(c(NA,1),size = 4,replace = T))

數據看起來像;

id  year    some_column

10  2012    1
10  2013    NA
10  2014    1
10  2015    NA
11  2012    NA
11  2013    1
11  2014    1
11  2015    NA
12  2012    NA
12  2013    1
12  2014    NA
12  2015    1
13  2012    1
13  2013    NA
13  2014    1
13  2015    1
14  2012    NA
14  2013    NA
14  2014    NA
14  2015    1
15  2012    NA
15  2013    1
15  2014    1
15  2015    1

我只想要這些觀察;

id  year    some_column

14  2012    NA
14  2013    NA
14  2014    NA
14  2015    1
15  2012    NA
15  2013    1
15  2014    1
15  2015    1

也許這行得通

library(dplyr)
library(data.table)
df1 %>% 
    group_by(id) %>% 
     filter(n_distinct(rleid(some_column)) <=2)  %>%
     ungroup

-輸出

# A tibble: 8 x 3
     id  year some_column
  <int> <int>       <int>
1    14  2012          NA
2    14  2013          NA
3    14  2014          NA
4    14  2015           1
5    15  2012          NA
6    15  2013           1
7    15  2014           1
8    15  2015           1

數據

df1 <- structure(list(id = c(10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 
12L, 12L, 12L, 12L, 13L, 13L, 13L, 13L, 14L, 14L, 14L, 14L, 15L, 
15L, 15L, 15L), year = c(2012L, 2013L, 2014L, 2015L, 2012L, 2013L, 
2014L, 2015L, 2012L, 2013L, 2014L, 2015L, 2012L, 2013L, 2014L, 
2015L, 2012L, 2013L, 2014L, 2015L, 2012L, 2013L, 2014L, 2015L
), some_column = c(1L, NA, 1L, NA, NA, 1L, 1L, NA, NA, 1L, NA, 
1L, 1L, NA, 1L, 1L, NA, NA, NA, 1L, NA, 1L, 1L, 1L)),
 class = "data.frame", row.names = c(NA, 
-24L))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM