代码之家  ›  专栏  ›  技术社区  ›  Adam_G

按多列中的成对条件筛选

  •  2
  • Adam_G  · 技术社区  · 5 年前

    我有一个类似下面的数据框架,希望按两列中的匹配项进行筛选。

    在下面,我想过滤艾米丽和女性,还有迈克尔和男性。我可以设置某种列表或数据帧,并使用它进行过滤吗?

    Name,Year,Gender,Count
    Emily,2000,Female,25952
    Emily,2001,Female,34294
    Michael,2000,Male,345697
    Michael,2000,Female,4
    Michael,2001,Male,185029
    Michael,2001,Female,5
    
    2 回复  |  直到 5 年前
        1
  •  2
  •   Julius Vainora    5 年前

    您确实可以使用感兴趣的案例定义一个数据框架,然后使用 inner_join :

    toFilter <- data.frame(Name = c("Emily", "Michael"), Gender = c("Female", "Male"))
    inner_join(df, toFilter)
    Joining, by = c("Name", "Gender")
    #      Name Year Gender  Count
    # 1   Emily 2000 Female  25952
    # 2   Emily 2001 Female  34294
    # 3 Michael 2000   Male 345697
    # 4 Michael 2001   Male 185029
    
        2
  •  1
  •   arg0naut91    5 年前

    如何:

    library(tidyverse)
    
    df %>%
    filter( (Name == "Emily" & Gender == "Female") | (Name == "Michael" & Gender == "Male") )
    

    使用数据:

    df <- read_csv("Name,Year,Gender,Count
             Emily,2000,Female,25952
             Emily,2001,Female,34294
             Michael,2000,Male,345697
             Michael,2000,Female,4
             Michael,2001,Male,185029
             Michael,2001,Female,5")