在一段时间内查找常用级别列表

问题描述 投票:1回答:2

我一直在dplyr包中尝试执行以下操作,但未成功。

我需要找到某个因子列的哪些级别出现在另一个因子列的每个级别中,在我的情况下,它是Year列。这可能是示例数据集:

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

所以,我希望列出每年出现的ID名称。在上面的示例中将是:

"1568", "1341"

我一直在尝试使用dplyrgrou_byYear,然后以某种方式summarise来处理数据,但是没有实现。

谢谢

r dplyr
2个回答
2
投票

使用dplyr,我们可以group_by ID并选择具有唯一编号Year的组作为完整数据。

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

#[1] 1568 1341

2
投票

这里是使用intersect() + split()的基本R解决方案>

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

诸如此类

> comm
[1] 1568 1341
© www.soinside.com 2019 - 2024. All rights reserved.