我们如何使用DPLYR过滤R中的联接

先生

我正在做一个项目,以查找必须重新设计服务的次数,但只能在原始服务结束的前30天内进行。使用以下样本数据集:

work <- tribble(
  ~Client ,  ~Initial_Date_In, ~Initial_Date_Out,
  'Car1',     '2019-01-01', '2019-01-02',
  'Car1',     '2019-06-01', '2019-06-03',
  'Car2',     '2019-01-01', '2019-01-02',
  'Truck1',     '2019-06-01', '2019-06-02',
  'Truck2',     '2019-04-01', '2019-04-02',
  'Truck3',     '2019-08-01', '2019-08-04',
  'Van1',     '2019-01-01', '2019-01-02',
  'Van2',     '2019-06-01', '2019-06-02',
  'Truck4',     '2019-10-05', '2019-10-09',
  
  
)

rework <- tribble(
  ~Client ,  ~Date_In, ~Date_Out,
  'Car1',     '2019-01-05', '2019-01-07',
  'Car1',     '2019-01-09', '2019-01-10',
  'Car1',     '2019-06-09', '2019-06-10',
  'Truck3',     '2019-08-07', '2019-08-08',
  'Van1',     '2019-03-01', '2019-03-01',
  'Van2',     '2019-06-09', '2019-06-11',
  'Truck4',     '2019-11-01', '2019-11-02',
  
  
)

work$Initial_Date_In <- lubridate::as_date(work$Initial_Date_In)
work$Initial_Date_Out <- lubridate::as_date(work$Initial_Date_Out)
rework$Date_In <- lubridate::as_date(rework$Date_In)
rework$Date_Out <- lubridate::as_date(rework$Date_Out)

我尝试了多种方法,例如:

work %>% 
  left_join(select(rework, Client,Date_Out), by = ("Client" = "Client")) %>% 
  group_by(Client) %>% 
  filter(max(Date_Out) >Initial_Date_Out & max(Date_Out) < (Initial_Date_Out+duration(30,"days")))

这段代码似乎拉出了最大的Initial_Date_In(Out),但我希望从工作表中的所有内容中获得适当的返工(在返工表的最大Date_Out上显示)

预期的输出将类似于:

Client    Initial_Date_In    Initial_Date_Out    Date_Out    #_Of_Rework_Visits
Car1      2019-01-01         2019-01-02          2019-01-10    2
Car1      2019-06-01         2019-06-03          2019-06-10    1
Truck3    2019-08-01         2019-08-04          2019-08-08    1
Van1      2019-06-01         2019-06-02          2019-06-11    1
Truck4    2019-10-05         2019-10-09          2019-11-02    1

关于我在做什么错的任何提示?

andrew_reece

更新
这是避免进行任何形式的正式加入的一种方法。与和一起
堆叠,然后使用一列(给定内服务应用程序的索引)作为分组/汇总变量:workreworkbind_rowsservice_ixClient

work %>% 
  mutate(service = "original") %>% 
  rename(Date_In = "Initial_Date_In", Date_Out = "Initial_Date_Out") %>% 
  group_by(Client) %>% 
  mutate(service_ix = row_number()) %>% 
  bind_rows(rework %>% 
              mutate(service = "rework") %>% 
              select(Client, Date_In, Date_Out, service)) %>% 
  arrange(Client, Date_In) %>% 
  fill(service_ix) %>% 
  group_by(Client, service_ix) %>% 
  summarise(initial_date_in = Date_In[service == "original"],
            initial_date_out = Date_Out[service == "original"],
            max_date_out = max(Date_Out),
            n_reworks = sum(service == "rework")) %>%
  filter(n_reworks > 0) %>% 
  ungroup()

开箱有点:

  1. 添加了一个service列,指示初始与返工。这是之后的组合df bind_rows()
# A tibble: 16 x 5
# Groups:   Client [8]
   Client Date_In    Date_Out   service  service_ix
   <chr>  <date>     <date>     <chr>         <int>
 1 Car1   2019-01-01 2019-01-02 original          1
 2 Car1   2019-01-05 2019-01-07 rework           NA
 3 Car1   2019-01-09 2019-01-10 rework           NA
 4 Car1   2019-06-01 2019-06-03 original          2
 5 Car1   2019-06-09 2019-06-10 rework           NA
 6 Car2   2019-01-01 2019-01-02 original          1
 7 Truck1 2019-06-01 2019-06-02 original          1
 8 Truck2 2019-04-01 2019-04-02 original          1
 9 Truck3 2019-08-01 2019-08-04 original          1
10 Truck3 2019-08-07 2019-08-08 rework           NA
11 Truck4 2019-10-05 2019-10-09 original          1
12 Truck4 2019-11-01 2019-11-02 rework           NA
13 Van1   2019-01-01 2019-01-02 original          1
14 Van1   2019-03-01 2019-03-01 rework           NA
15 Van2   2019-06-01 2019-06-02 original          1
16 Van2   2019-06-09 2019-06-11 rework           NA
  1. fill步骤替换service_ixNA值:
   Client Date_In    Date_Out   service  service_ix
   <chr>  <date>     <date>     <chr>         <int>
 1 Car1   2019-01-01 2019-01-02 original          1
 2 Car1   2019-01-05 2019-01-07 rework            1
 3 Car1   2019-01-09 2019-01-10 rework            1
 4 Car1   2019-06-01 2019-06-03 original          2
 5 Car1   2019-06-09 2019-06-10 rework            2
  1. 现在按Client分组service_ix,并根据需要进行汇总。
# A tibble: 6 x 6
  Client service_ix initial_date_in initial_date_out max_date_out n_reworks
  <chr>       <int> <date>          <date>           <date>           <int>
1 Car1            1 2019-01-01      2019-01-02       2019-01-10           2
2 Car1            2 2019-06-01      2019-06-03       2019-06-10           1
3 Truck3          1 2019-08-01      2019-08-04       2019-08-08           1
4 Truck4          1 2019-10-05      2019-10-09       2019-11-02           1
5 Van1            1 2019-01-01      2019-01-02       2019-03-01           1
6 Van2            1 2019-06-01      2019-06-02       2019-06-11           1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我们如何计算R中数据集的PSD

来自分类Dev

我们如何根据输入的文本在JFace中过滤表查看器

来自分类Dev

我们如何使用opencart事件?

来自分类Dev

我们如何在红宝石上使用rethinkdb和nobrainer对OR进行过滤?

来自分类Dev

在PowerBI Desktop中,我们如何显示在报告中选择的过滤器

来自分类Dev

我如何使用游标中的if条件,因为我们的教授不允许我们在select语句中使用where子句

来自分类Dev

SQL查询轨道,如何过滤我们当前的保留

来自分类Dev

我们可以不使用联接在Oracle sql中创建重复的行吗

来自分类Dev

如何在R中堆叠我们的数据

来自分类Dev

R在我们的MCMCglmm中,我们IDH,IDV代表什么

来自分类Dev

如何对我们使用clearInterval()函数?

来自分类Dev

如何使用dplyr过滤r中的日期?

来自分类Dev

我们如何从R中的数据框中删除标签

来自分类Dev

我们如何在迁移学习中为我们的培训设置标签?

来自分类Dev

我们如何在R中的索引操作中执行操作?

来自分类Dev

我们如何从数组中过滤文本

来自分类Dev

我们如何使用Django中的prefetch_related函数从两个表中过滤结果

来自分类Dev

我们可以使用angular js中的自定义过滤器过滤嵌套的json数据吗

来自分类Dev

我们如何替换R中向量中的元素?

来自分类Dev

我们如何使用tapGesture在Tvos中播放视频

来自分类Dev

我们如何在Sencha ExtJS 6.0.2版中全局设置我们要使用的时区?

来自分类Dev

在PowerBI Desktop中,我们如何显示在报告中选择的过滤器

来自分类Dev

我们如何通过内部联接对SQL中的列进行分组?

来自分类Dev

我们如何在 Linq 中过滤具有多个 if 条件的列表

来自分类Dev

我们应该如何使用微服务构建我们的模型?

来自分类Dev

我们如何在引用中的 r 中使用全局变量

来自分类Dev

我们如何传递比方法要求我们使用 DataProvider 更少的参数?

来自分类Dev

我们如何从我们正在使用的组件中获取一个 prop?(反应)

来自分类Dev

我们如何快速使用 NSSelectorFromString ?

Related 相关文章

  1. 1

    我们如何计算R中数据集的PSD

  2. 2

    我们如何根据输入的文本在JFace中过滤表查看器

  3. 3

    我们如何使用opencart事件?

  4. 4

    我们如何在红宝石上使用rethinkdb和nobrainer对OR进行过滤?

  5. 5

    在PowerBI Desktop中,我们如何显示在报告中选择的过滤器

  6. 6

    我如何使用游标中的if条件,因为我们的教授不允许我们在select语句中使用where子句

  7. 7

    SQL查询轨道,如何过滤我们当前的保留

  8. 8

    我们可以不使用联接在Oracle sql中创建重复的行吗

  9. 9

    如何在R中堆叠我们的数据

  10. 10

    R在我们的MCMCglmm中,我们IDH,IDV代表什么

  11. 11

    如何对我们使用clearInterval()函数?

  12. 12

    如何使用dplyr过滤r中的日期?

  13. 13

    我们如何从R中的数据框中删除标签

  14. 14

    我们如何在迁移学习中为我们的培训设置标签?

  15. 15

    我们如何在R中的索引操作中执行操作?

  16. 16

    我们如何从数组中过滤文本

  17. 17

    我们如何使用Django中的prefetch_related函数从两个表中过滤结果

  18. 18

    我们可以使用angular js中的自定义过滤器过滤嵌套的json数据吗

  19. 19

    我们如何替换R中向量中的元素?

  20. 20

    我们如何使用tapGesture在Tvos中播放视频

  21. 21

    我们如何在Sencha ExtJS 6.0.2版中全局设置我们要使用的时区?

  22. 22

    在PowerBI Desktop中,我们如何显示在报告中选择的过滤器

  23. 23

    我们如何通过内部联接对SQL中的列进行分组?

  24. 24

    我们如何在 Linq 中过滤具有多个 if 条件的列表

  25. 25

    我们应该如何使用微服务构建我们的模型?

  26. 26

    我们如何在引用中的 r 中使用全局变量

  27. 27

    我们如何传递比方法要求我们使用 DataProvider 更少的参数?

  28. 28

    我们如何从我们正在使用的组件中获取一个 prop?(反应)

  29. 29

    我们如何快速使用 NSSelectorFromString ?

热门标签

归档