我正在尝试创建一个非常简单的for循环来更新数据帧。我不确定这是最佳做法还是有另一种方法可以做到这一点。我有一个名单和一个帐户列表,我正在尝试将每个帐户分配给具有最低值的名称。
这就是我所拥有的:
Person <- c("Jeff", "Cindy", "Matt", "Jessica")
TotalValue <- c(54, 46, 15, 13)
NAMES <- data.frame(Person, TotalValue)
Accounts <- c(paste0("acc",1:50))
AccountValues <- c(1:50)
ACCOUNTS <- data.frame(Accounts, AccountValues)
for (i in nrow(ACCOUNTS)){
idx <- which.min(NAMES$TotalValue)
NAMES$TotalValue[idx] <- NAMES$TotalValue[idx] + ACCOUNTS$AccountValues[i]
ACCOUNTS$name[i] <- as.character(NAMES$Person[idx])
}
起点:
Person TotalValue
Jeff 54
Cindy 46
Matt 15
Jessica 13
Accounts AccountValues Person
Acc1 1
Acc2 2
Acc3 3
Acc4 4
Acc5 5
等
我正在尝试遍历50个帐户中的每个帐户,并从NAMES df中分配其中一个人。我希望它找到得分最低的人,并指定该名称。 Acc1将查看4个名称并查看Jessica的得分最低为13.然后使用Jessica的名称填充Acc1的Person列,并将AccountValue为1,从acc1,到Jessica的得分,使她的得分现在为14。然后它看着Acc2,再次找到Jessica,因为她的得分是14,仍然是最低的。再一次,它将Acc2 Person填充到Jessica。对于acc3,它会找到Matt,因为Jessica的分数现在是16(13 + 1 + 2),而Matt只有15分。然后它会在Acc3的Person栏中填充Matt的名字,并在他的分数上加3,给他18 ..等等。
我已将列表缩短为Acc1 - Acc5而不是50.这将是分配5个帐户后的结果。
预期结果:
Person TotalValue
Jeff 54
Cindy 46
Matt 23
Jessica 20
Accounts AccountValues Person
Acc1 1 Jessica
Acc2 2 Jessica
Acc3 3 Matt
Acc4 4 Jessica
Acc5 5 Matt
谢谢!