我有一个这样的数据集:
PatientNum<- c(1, 2, 3, 4, 5)
Age<- c(10, 21, 51, 42, 35)
SurgicalProcedureNumber <- c(21356, 21424, 221356, 12345, 54321)
OtherSurgicalProcedureNumber <- c(54321, 21356, 12345, 12345, 21424)
BloodLoss<-c(5,4,5,10,5)
YetAnotherSurgicalProcedureNumber<-c(11111,22222,33333,21356,555555)
dataset <- data.frame(PatientNum, Age, SurgicalProcedureNumber, OtherSurgicalProcedureNumber, BloodLoss,YetAnotherSurgicalProcedureNumber)
Run Code Online (Sandbox Code Playgroud)
我想知道患者何时接受某些手术:
NumbersIcareAbout<- c(21356,21424)
Run Code Online (Sandbox Code Playgroud)
我知道在我可以做的一栏中找到它们:
dataset%>%filter(SurgicalProcedureNumber%in%NumbersIcareAbout)
Run Code Online (Sandbox Code Playgroud)
这将返回患者 1 和 2,因为它有这些代码...但我希望它在这些数字出现在 SurgicalProcedureNumber、OtherSurgicalProcedureNumber 或 YetAnotherSurgicalProcedureNumber 中时返回该行
不知道如何,也无法在这里找到它。
在dplyr1.0.4版本中,我们可以filter使用if_any
library(dplyr)
dataset %>%
filter(if_any(ends_with("ProcedureNumber"), ~ . %in% NumbersIcareAbout))
Run Code Online (Sandbox Code Playgroud)