簡體   English   中英

通過較小的 tibble 對 tibble 進行子集

[英]Subset a tibble by a smaller tibble

我有兩個小東西

data
A tibble: 6,358,584 x 3
Date     Name       Key
<date>  <chr>      <chr>

treated_group
A tibble: 6,051 x 1  
 Key
 <chr>

鍵標識了我處理過的組,我想為所有處理過的對象對較大的 tibble 進行子集化。 但是通過使用過濾器

data %>% filter(Key == treated_group)

我遇到了錯誤:

Error in filter_impl(.data, quo) : Result must have length 6358584, not 6051我認識到我只能對 1x1 使用過濾器,因此我會使用一種解決方法,在其中循環處理待處理組的行並過濾數據對於每一行,但這效率非常低,我想留在 dplyr 框架內。

任何提示和幫助表示贊賞!

head(data)
#> # A tibble: 6 x 3
#>   TIMESTAMP_UTC ENTITY_NAME ENS_KEY                         
#>   <date>        <chr>       <chr>                           
#> 1 2000-01-04    3M Co.      E73F64B685D3E70AFE8DFC37C33825F7
#> 2 2000-01-04    3M Co.      62D1EE4BF4DF6EDD38F95E4033B4E687
#> 3 2000-01-05    3M Co.      24EFCCD1828DDBB164A7CDED15696EC9
#> 4 2000-01-05    3M Co.      62D1EE4BF4DF6EDD38F95E4033B4E687
#> 5 2000-01-10    3M Co.      BF24EB30E19607DD73C0BC51F9EF2DF4
#> 6 2000-01-10    3M Co.      940F168DB3203A028350BC4989EBDE17
head(treated_data)
#> # A tibble: 6 x 1
#>   ENS_KEY                         
#>   <chr>                           
#> 1 2CDDC73CD6247E41244EE82B3BD2AB14
#> 2 940F168DB3203A028350BC4989EBDE17
#> 3 1D9944BA5D170684910D3F5E56C2990B
#> 4 8431C047CFA3920042325B28B238E335
#> 5 606FAF396319C78ABC9CAD17C49E52D9
#> 6 3B277F9151290346EF7E05EC046121D9
filter(data,ENS_KEY %in% treated_data)
#> # A tibble: 0 x 3
#> # ... with 3 variables: TIMESTAMP_UTC <date>, ENTITY_NAME <chr>,
#> #   ENS_KEY <chr>

reprex 包(v0.3.0) 於 2019 年 7 月 31 日創建

如您所見,我的數據的第 6 項和我的 Treated_data 匹配的第 2 項,但輸出是一個空的 tibble!

這樣的事情怎么樣?

pull函數只是獲取列中的值並將它們放入一個向量中。 您可以%in%過濾時將其與%in%一起使用。

td <- treated_data %>% 
  pull #just gets the values

data %>% 
  filter(ENS_KEY %in% td)

你會得到:

# A tibble: 1 x 3
  TIMESTAMP_UTC ENTITY_NAME ENS_KEY                         
  <chr>         <chr>       <chr>                           
1 10/01/2000    3M Co.      940F168DB3203A028350BC4989EBDE17

另一個選項,它會給你相同的結果:

data %>% 
  inner_join(treated_data, by = "ENS_KEY")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM