Мне нужна помощь, чтобы написать функцию цикла в R. У меня возникла проблема с выбором предыдущего совпадения при совпадении идентификатора, а затем написать OLD_RANK
столбец и NEW_RANK
столбец.
OLD_RANK
должно быть NEW_RANK
предыдущего найденного совпадения.
`NEW_RANK`<- OLD_RANK+0.05(S1-S2)
Вот мои данные для этого примера
JUNK<- matrix(c(1,1,10,20,3,2,30,40,1,3,60,4,3,
4,5,40,1,5,10,30,7,6,20,20),ncol=4,byrow=TRUE)
colnames(JUNK) <- c("ID1","DAY","S1","S2")
JUNK<- as.data.frame(JUNK)
То, что я считал хорошим началом:
#subset to find previous match. Find matches before days and if more matches are
#found, choose the row with higher values in `days`
loop for each row
s1 <- subset(s1, DAYS < days)
s1 <- subset(s1, DAYS = max(days))
#if no match fuond JUNK$OLD_RANK<-35 and JUNK$NEW_RANK <-JUNK$OLD_RANK+0.05(S1-S2)
#if previous match is found JUNK$NEW_RANK <-JUNK$OLD_RANK+0.05(S1-S2)
ожидаемый результат:
ID1 DAYS S1 S2 OLD_RANK NEW_RANK
1 1 10 20 35 34.5
3 2 30 40 35 34.5
1 3 60 4 34.5 37.3
3 4 5 40 34.5 32.75
1 5 10 30 37.3 36.3
7 6 20 20 35 35
Любая помощь приветствуется.