【问题标题】:Get duplicate values within groups [duplicate]获取组内的重复值[重复]
【发布时间】:2021-01-19 04:39:19
【问题描述】:

我正在尝试在组内获取重复值。更具体地说,我想检查每个家庭中重复的儿童 ID,但不同家庭的重复儿童 ID 很好。例如,我有一个名为“村庄”的数据框:

village <- data.frame(household = c(1, 1, 1, 2, 3, 3), 
                      children = c("A001", "A002", "A001", "A004", "A005", "A001"))

我想得到以下输出:

expected <- data.frame(household = c(1, 1), 
                       children = c("A001", "A001"))

【问题讨论】:

    标签: r dataframe group-by


    【解决方案1】:

    我们可以按“家庭”、“孩子”和filter行数大于1的行进行分组

    library(dplyr)
    village %>% 
       group_by(household, children) %>% 
       filter(n() > 1) %>%
       ungroup
    

    -输出

    # A tibble: 2 x 2
    #  household children
    #      <dbl> <chr>   
    #1         1 A001    
    #2         1 A001   
    

    或者使用base Rduplicated

    village[duplicated(village)|duplicated(village, fromLast = TRUE),]
    #  household children
    #1         1     A001
    #3         1     A001 
    

    【讨论】:

    • group_by() 答案正是我所需要的,因为我在实际数据集中拥有的不仅仅是这两列。谢谢!
    • @KarenLiu 你也可以使用duplicated,如果你是子集,即village[duplicated(village[1:2])|duplicated(village[1:2], fromLast = TRUE),]
    【解决方案2】:

    另一个使用 subset + ave 的基本 R 选项

    > subset(village,ave(household,household,children,FUN = length)>1)
      household children
    1         1     A001
    3         1     A001
    

    【讨论】:

      猜你喜欢
      • 2016-12-02
      • 2021-06-10
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 2017-09-25
      • 2021-03-10
      相关资源
      最近更新 更多