是否根据另一个小标题在mutate中过滤一个小标题?

问题描述 投票:2回答:1

我有两个小标题,范围和地点。第一个包含一组坐标(区域,开始,结束以及其他字符变量),另一个包含一个地点(区域,地点)。我需要获得第二个小标题中所有落在给定范围(行)内的所有站点。复杂的是,第一个小标题的范围重叠。

# Range tibble
  region start end var_1 ... var_n
1  A     1     5   
2  A     3     10
3  B     20    100
# Site tibble
  region site 
1  A     4        
2  A     8    
3  B     25

〜200,000范围可以在大约十亿个站点上长100,000s,所以我不喜欢我的想法,该方案是列出范围内的所有值,取消嵌套,半联接,分组和汇总( a_list =列表(站点))”。

我希望有类似的东西:

range_tibble %>%
  rowwise %>%
  mutate(site_list = site_tibble %>%
                filter(region.site == region.range, site > start, site < end) %>%
      .$site %>% as.list))

产生像这样的小标题:

# Final tibble
 region start   end    site_list  var_1 ... var_n    
  <chr>  <dbl> <dbl>   <list>     <chr>     <chr>
  1 A          1     5 <dbl [1]>
  2 A          3    10 <dbl [2]>
  3 B         20   100 <dbl [1]>

我已经看到了使用外部变量“获取”的答案(即filter(b == get(“ b”)),但是如何从当前行中的变量中获取该变量呢?任何聪明的管道或我没想到的语法是什么呢,一种完全不同的方法也很棒,只要它可以很好地处理大数据并且可以转换为小标题。

我有两个小标题,范围和地点。第一个包含一组坐标(区域,开始,结束以及其他字符变量),另一个包含一个地点(区域,地点)。我需要得到所有...

r filter dplyr tibble
1个回答
1
投票

使用left_join()合并两个数据帧,并使用summarise()合并指定范围内的站点。

© www.soinside.com 2019 - 2024. All rights reserved.