Мне нужно обновить x_elitable до 1, для всех соответствующих записей того же самого study_id & site, где x == 1.
Это для того, чтобы перезаписывать значения x для тех же записей, что и study_id & site, когда x_elitable имеет значение 1
Вот воспроизводимый код:
library(tidyverse)
newdata = data.frame(site = c('A','A','A','B','B','B','B'),
study_id = c(1,1,2,1,1,1,2),
x = c(0,1,0,0,NA,1,0),
x_eligible = c(0,1,0,0,0,1,0))
xEligibility2 <- function (x, siteid, studyID){
el = newdata %>% filter(site == siteid & study_id ==studyID & x_eligible==1)
if(exists("el"))
return(ifelse(nrow(el)>=1,1,0))
else
return(0)
}
newdata = newdata %>% mutate(
x_eligible = ifelse(apply(newdata, 1, xEligibility2, siteid=site, studyID=study_id) == 1, 1, 0)
)
И вот что я получаю в качестве результата в столбце x_elptable:
x_eligible = c(1,1,1,1,1,1,1)
x_elitable все устанавливается на 1.
Это мой ожидаемый результат:
x_eligible = c(1,1,0,1,1,1,0)
Буду признателен за любую помощь, чтобы указать, что я могу делать неправильно.