Я действительно понятия не имею, что я ищу: цикл, рекурсивная функция или что-то другое.
Это мой игрушечный набор данных:
ID1 S1 S2 S3
1 10 20 30
2 20 30 40
1 50 60 70
3 20 40 50
1 10 30 10
2 40 20 20
toy$OLD_RANK
= найти предыдущую строку с тем же ID1 и скопировать NEW RANK этой строки.Если ни одна строка с таким же ID1 не присвоит присвоенное значение (10 в этом примере)
toy$NEW_RANK
= OLD_RANK + S1 + S2 + S3
ожидаемый результат:
ID1 S1 S2 S3 OLD_RANK NEW_RANK
1 10 20 30 10 70
2 20 30 40 10 100
1 50 60 70 70 250
3 20 40 50 10 120
1 10 30 10 280 330
2 40 20 20 100 180
кадр данных для R по запросу:
toy <- matrix(c(1,10,20,30,2,20,30,40,1,50,60,70,3,20,40,50,1,10,30,10,2,40,20,20),ncol=4,byrow=TRUE)
colnames(toy) <- c("ID1","S1","S2","S3")
toy <- as.data.frame(database )