[英]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.