![](/img/trans.png)
[英]combined and sum the data.frame within tolerance by using one of column
[英]Calculating sum of certain rows within one data.frame
我有一個名為“test”的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)
i 和 z 的兩個循環都將運行相同的迭代。 如果日期差等於 1,則將存儲結果。
visited <- vector()
num_list <-vector()
for (i in 1:nrow(test)){
for (z in 1:nrow(test)){
if (test[z,2] - test[i,3] == 1){
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
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.