这是一个与R: How to code new variable based on grouped variable and conditioned on earlier row * 类似/跟进的问题,但不同之处在于供体内可能存在两次匹配运行。*
我有一个器官捐赠者的数据文件。我在看捐赠的肺-有两个肺。
如果肺被分开(左肺和右肺)并准备捐献,它们将分别与受体匹配(“matchrun”),然后经过合格的受体,直到有一个匹配(“sequence”)。
如果肺与受体匹配,则将其发送给受体(“器官放置”)。
如果肺部不匹配,则它继续在序列中,然后在最大序列号处保持NA。
我想创建一个包含匹配运行结果的新变量,以便如果放置了一个肺,而另一个未放置,它会告诉您该肺被丢弃。即,参见数据中供体2的情况-放置了左肺,但右肺不匹配。
在供体3中,第一次匹配运行不匹配,但另一个肺的匹配运行匹配。
我认为它应该是类似group_by(donorid,matchrun)的东西,但是如何基于match run创建条件呢?
library(tribble)
library(dplyr)
data <- tribble(
~donorid, ~matchrun, ~sequence, ~organ_placed,
2, 3, 1, NA,
2, 3, 2, NA,
2, 3, 3, "L",
2, 4, 1, NA,
2, 4, 2, NA,
2, 4, 3, NA,
3, 5, 1, NA,
3, 5, 1, NA,
3, 5, 1, NA,
3, 6, 1, NA,
3, 6, 2, NA,
3, 6, 3, "L"
)
desired_outcome <- tribble(
~donorid, ~matchrun, ~sequence, ~organ_placed, ~organ,
2, 3, 1, NA, NA,
2, 3, 2, NA, NA,
2, 3, 3, "L", "Left Single",
2, 4, 1, NA, NA,
2, 4, 2, NA, NA,
2, 4, 3, NA, "Right Discarded",
3, 5, 1, NA, NA,
3, 5, 1, NA, NA,
3, 5, 1, NA, "Right Discarded",
3, 6, 1, NA, NA,
3, 6, 2, NA, NA,
3, 6, 3, "L", "Left Single")
3条答案
按热度按时间zyfwsgd61#
你可以试试这个:
输出
aurhwmvo2#
更新:我们必须将
matchrun
添加到组中。删除之前的解决方案:rdlzhqv93#
我们可以用