【问题标题】:filtering a tibble based on values in a second tibble根据第二个小标题中的值过滤小标题
【发布时间】:2020-05-06 11:14:18
【问题描述】:

给定以下小标题:

df1<- tibble(A = c(1:10), B=sample(c(21:30)))
df2<-tibble(A = c(1,2,4,6,7))

我想创建 df3,其中包含在 df2$A 中找到 df1$A 的所有行。我试过了

df3<- df1 %>% filter(A == df2%A))

但这仅返回 2 行,因为它匹配行,而不是搜索值。我的真实数据集是几千行。

提前致谢!

【问题讨论】:

    标签: r sorting dplyr


    【解决方案1】:
    library(tidyverse)
    df1<- tibble(A = c(1:10), B=sample(c(21:30)))
    df2<-tibble(A = c(1,2,4,6,7))
    df1 %>% 
      filter(df1$A %in% df2$A)
    

    【讨论】:

      【解决方案2】:

      正确的做法是使用semi_join()

      例如,

      library(tidyverse)
      set.seed(123)
      df1 <- tibble(A = c(1:10), B = sample(c(21:30)))
      df2 <- tibble(A = c(1, 2, 4, 6, 7))
      
      df3 <- semi_join(df1, df2, by = "A")
      df3
      #> # A tibble: 5 x 2
      #>       A     B
      #>   <int> <int>
      #> 1     1    23
      #> 2     2    30
      #> 3     4    28
      #> 4     6    29
      #> 5     7    21
      

      reprex package (v0.3.0) 于 2020-05-06 创建

      【讨论】:

        猜你喜欢
        • 2019-11-14
        • 2021-11-18
        • 1970-01-01
        • 2021-11-18
        • 2019-01-28
        • 1970-01-01
        • 1970-01-01
        • 2016-07-01
        • 2021-12-13
        相关资源
        最近更新 更多