for循环检查项目在一个月内处于活动状态的天数。我有一个文件,其中包含两列项目的开始日期(财务$Start WO)和结束日期(财务$Eind Wo)。为了确定在项目上工作的天数,我使用‘bizday’函数,并使用:
ts_begin <- seq(ymd('2020-1-1'), ymd('2021-1-1'), '1 month')
开始/结束日期示例:
Finance$`Start WO` <- c("2020-01-16", "2020-02-17", "2020-03-04")
Finance$`Eind Wo` <- c("2020-06-30", "2020-07-14" , "2020-12-31")
Dagen <- matrix(0, ncol = 12, nrow = 81)
for (i in nrow(Finance)) {
for (j in 2:13) {
if (Finance$`Start WO`[i] > ts_begin[j-1] & Finance$`Start WO`[i] < ts_begin[j]) {
Dagen[i,j-1] <- bizdays(ts_begin[j-1],ts_begin[j],cal) - bizdays(ts_begin[j-1],Finance$`Start WO`[i],cal)
} else if (Finance$`Eind Wo`[i] > ts_begin[j-1] & Finance$`Eind Wo`[i] <= ts_begin[j]) {
Dagen[i,j-1] <- bizdays(ts_begin[j-1], Finance$`Eind Wo`[i], cal)
} else if (Finance$`Start WO`[i] < ts_begin[j-1] & Finance$`Eind Wo`[i] >= ts_begin [j]) {
Dagen[i,j-1] <- bizdays(ts_begin[j-1], ts_begin[j], cal )
} else {
Dagen[i,j-1] <- 0
}
}
}我希望输出为81 (=nrow(Finance) x 12 )矩阵,但得到的是12 x 11矩阵。你能告诉我出了什么问题吗?
发布于 2020-04-15 17:52:48
你想让我从1:nrow(Finance)逃走。我应该在这之后工作。
Finance$`Start WO` <- c("2020-01-16", "2020-02-17", "2020-03-04")
Finance$`Eind Wo` <- c("2020-06-30", "2020-07-14" , "2020-12-31")
Dagen <- matrix(0, ncol = 12, nrow = 81)
for (i in 1:nrow(Finance)) {
for (j in 2:13) {
if (Finance$`Start WO`[i] > ts_begin[j-1] & Finance$`Start WO`[i] < ts_begin[j]) {
Dagen[i,j-1] <- bizdays(ts_begin[j-1],ts_begin[j],cal) - bizdays(ts_begin[j-1],Finance$`Start WO`[i],cal)
} else if (Finance$`Eind Wo`[i] > ts_begin[j-1] & Finance$`Eind Wo`[i] <= ts_begin[j]) {
Dagen[i,j-1] <- bizdays(ts_begin[j-1], Finance$`Eind Wo`[i], cal)
} else if (Finance$`Start WO`[i] < ts_begin[j-1] & Finance$`Eind Wo`[i] >= ts_begin [j]) {
Dagen[i,j-1] <- bizdays(ts_begin[j-1], ts_begin[j], cal )
} else {
Dagen[i,j-1] <- 0
}
}
}https://stackoverflow.com/questions/61225293
复制相似问题