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

在多个条件下使用dplyr filter()进行筛选

  •  3
  • Dhiraj  · 技术社区  · 6 年前

    我有一个包含两个变量的唯一值的数据框:

    df <- data.frame(V1=LETTERS,V2=c(1:26))
    

    我想为中的值筛选另一个数据帧 df$V1 和对应的值 df$V2 .这是我尝试过的,显然不会产生期望的结果:

    df2 <- data.frame(V1=c('A','A','B','B','A'),
                        V2=c(1,2,2,3,4))
    df2 %>% filter(V1 %in% unique(df$V1) & V2 %in% unique(df$V2))
    

    我期望的后过滤结果是:

      V1 V2
    1  A  1
    2  B  2
    

    我如何做到这一点?

    3 回复  |  直到 6 年前
        1
  •  2
  •   Onyambu    6 年前
    merge(df,df2)
      V1 V2
    1  A  1
    2  B  2
    
    library(tidyverse)
    inner_join(df,df2)
      V1 V2
    1  A  1
    2  B  2
    
        2
  •  2
  •   AntoniosK    6 年前

    df[df$V1 %in% unique(df2$V1),]
    
    #   V1 V2
    # 1  A  1
    # 2  B  2
    

    library(tidyverse)
    
    df %>% filter(V1 %in% unique(df2$V1))
    
    #   V1 V2
    # 1  A  1
    # 2  B  2
    

    df V1 df2

        3
  •  1
  •   akrun    6 年前

    intersect

    library(dplyr)
    intersect(df, df2)
    #  V1 V2
    #1  A  1
    #2  B  2
    

    data.table

    library(data.table)
    fintersect(df, df2)
    #   V1 V2
    #1:  A  1
    #2:  B  2