我有两个小题词
data
A tibble: 6,358,584 x 3
Date Name Key
<date> <chr> <chr>
treated_group
A tibble: 6,051 x 1
Key
<chr>
该键标识了我的治疗组,我希望将所有治疗过的对象的较大细分化。但是,使用过滤器
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 package(v0.3.0)于2019-07-31创建
如您所见,我的数据的条目6和我的Treated_data的条目2匹配,但是输出是空的提示!
答案 0 :(得分:1)
这样的事情怎么样?
pull
函数仅将列中的值放入向量中。过滤时,您可以将其与%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")