根据ID和其他变量对案例进行分组

时间:2020-08-28 11:18:21

标签: r dataframe

我无法根据ifelse条件限制数据集。

这是我的数据框的示例:

structure(list(id = c(111, 111, 111, 112, 112, 112), se = c(1, 
2, 3, 1, 2, 3), pe = c(1, 1, 2, 1, 1, 1)), class = "data.frame", row.names = c(NA, 
-6L))

我需要选择ID和pe相同的案例

终点表应该是这样:

  id     se   pe
    112     1    1  
    112     2    1    
    112     3    1

2 个答案:

答案 0 :(得分:1)

我建议使用dplyr的下一种方法。您可以计算标志以确定唯一元素的数量,然后进行过滤。标志为nidnpe。这里的代码包含df您的dput()数据:

library(dplyr)
#Code
df %>% group_by(id) %>% mutate(nid = n_distinct(id),npe = n_distinct(pe)) %>%
  filter(nid==1 & npe==1) %>% select(-c(nid,npe))

输出:

# A tibble: 3 x 3
# Groups:   id [1]
     id    se    pe
  <dbl> <dbl> <dbl>
1   112     1     1
2   112     2     1
3   112     3     1

答案 1 :(得分:0)

我们也可以在不创建/删除新列的情况下完成此操作

library(dplyr)
df1 %>% 
   group_by(id) %>% 
   filter(n_distinct(se) == 1 | n_distinct(pe) == 1)
# A tibble: 3 x 3
# Groups:   id [1]
#     id    se    pe
#  <dbl> <dbl> <dbl>
#1   112     1     1
#2   112     2     1
#3   112     3     1