寻找 dplyr 函数来有条件地应用过滤器

jsg*_*don 5 r dplyr tidyverse

我有一个包含各种血液学值及其收集时间的数据框。这些值只能在特定时间收集,但偶尔会添加一个额外的值。我想删除在计划时间之外收集值的任何实例。

为了说明这个问题,这里有一些代码来创建我正在使用的数据框的一个非常简化的版本(加上一些示例时间表):

example <- tibble("Parameter" = c(rep("hgb", 3), rep("bili", 3), rep("LDH", 3)), 
                  "Collection" = c(1, 3, 4, 1, 5, 6, 0, 4, 8))

hgb_sampling <- c(1, 4)
bili_sampling <- c(1, 5)
ldh_sampling <- c(0, 4)

Run Code Online (Sandbox Code Playgroud)

因此,我需要一种方法来根据 Parameter 列中的值有条件地应用过滤器。该解决方案需要适合 dyplr 管道并产生如下内容:

filtered <- tibble("Parameter" = c(rep("hemoglobin", 2), rep("bilirubin", 2), rep("LDH", 2)), 
                  "Collection" = c(1, 4, 1, 5, 0, 4))
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几件事(它们都类似于下面的内容),但是“参数”的使用会使事情出错:

df <- example %>%
  {if (Parameter == "hgb") filter(., Collection %in% hgb_sampling)} 
Run Code Online (Sandbox Code Playgroud)

有什么建议?