Найти список общих уровней за серию времени - PullRequest
1 голос
/ 20 января 2020

Я пытался сделать следующее в пакете dplyr, но безуспешно.

Мне нужно выяснить, какие уровни определенного столбца факторов присутствуют на каждом уровне другого столбца факторов, в моем случае это столбец года. Это может быть пример набора данных:

ID              Year       
1568            2013         
1341            2013          
1568            2014
1341            2014
1261            2014
1348            2015         
1568            2015 
1341            2015

Так что я хотел бы список имен идентификаторов, которые присутствуют в каждом году. В приведенном выше примере будет:

"1568", "1341"

Я пытался с dplyr для сначала grou_by столбец Year, а затем summarise данные как-то, но без достижения этого.

Спасибо

Ответы [ 2 ]

2 голосов
/ 20 января 2020

Вот базовое решение R с использованием intersect() + split()

comm <- Reduce(intersect,split(df$ID,df$Year))

таким, что

> comm
[1] 1568 1341
2 голосов
/ 20 января 2020

Используя dplyr, мы можем group_by ID и выбрать группы, которые имеют то же количество уникальных Year, что и полные данные.

library(dplyr)
df %>%
  group_by(ID) %>%
  filter(n_distinct(Year) == n_distinct(.$Year)) %>%
  pull(ID) %>%unique()

#[1] 1568 1341
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...