У меня есть data.frame
, называемый "тест", подобный этому:
Age START_DATE END_DATE ACCT_NO PRINCIPAL_AMOUNT_BASE
1 60 01/05/2014 30/06/2014 ACC1 400
2 121 01/03/2014 30/06/2014 ACC2 200
3 121 01/03/2014 30/06/2014 ACC3 300
4 180 01/01/2014 30/06/2014 ACC4 100
5 183 01/07/2014 31/12/2014 ACC5 200
6 914 01/07/2014 31/12/2016 ACC6 300
7 914 01/07/2014 31/12/2016 ACC7 500
8 1644 01/07/2014 31/12/2018 ACC8 50
Я пытаюсь получить список сумм для PRINCIPAL_AMOUNT_BASE
между каждой учетной записью, у которой дата начала = предыдущая учетная запись с датой окончания + 1. Например: acc1 имеет дату окончания 30/06/2014, а acc5 имеет дату начала 01/07/2014 => 400 + 200 = 600. Также дату начала каждой строки можно использовать только один раз (следующая сумма будет между acc2 и acc6, а не acc2 и acc5).
Вот мой код:
visited <- vector()
num_list <-vector()
for (i in 1:nrow(test)){
for (z in i+1:nrow(test)){
if ((test[i, 3] + 1) == test[z,2]){
if (z %in% visited){
next
} else {
result <- test[i,5] + test[z,5]
num_list <- c(num_list, result)
visited <- c(visited, z)
print (result)
break
}
}
}
}
Я получаю эту ошибку:
Error in if ((test[i, 3] + 1) == test[z, 2]) { :
missing value where TRUE/FALSE needed
In addition: Warning message:
In Ops.factor(test[i, 3], 1) : ‘+’ not meaningful for factors
Я ожидаю, что вектор будет содержать следующее число: (600, 500, 800, 150)