21-Oct 28-Oct 4-Nov 11-Nov
22-Apr 90 95 95 95
29-Apr 95 100 100 100
6-May 95 100 100 100
13-May 90 100 100 95
20-May 90 95 95 90
27-May 80 85 85 90
3-Jun 75 80 80 85
`上面的数据显示了开始日期(行)和结束日期(列),并且值以给定开始日期和结束日期的百分比表示结果。我想创建一个优化模型,以便选择开始日期和结束日期会使用R产生结果。
这个问题的关键是如何根据行和列的名称对数据框进行子集化。在这里,我设计了一个函数来实现此目的。要使用此功能,你可以设置start
开始日期,end
结束日期和dt
数据框。
outcome <- function(start, end, dt){
out <- dt[rownames(dt) %in% start, colnames(dt) %in% end]
return(out)
}
# Example:
outcome(start = "29-Apr", end = "28-Oct", dt = dat)
# [1] 100
或者,如评论中所述,你可以直接执行以下操作。
outcome <- function(start, end, dt){
out <- dt[start, end]
return(out)
}
数据
dat <- read.table(text = "'22-Apr' 90 95 95 95
'29-Apr' 95 100 100 100
'6-May' 95 100 100 100
'13-May' 90 100 100 95
'20-May' 90 95 95 90
'27-May' 80 85 85 90
'3-Jun' 75 80 80 85", header = FALSE, row.names = 1)
names(dat) <- c("21-Oct", "28-Oct", "4-Nov", "11-Nov")
@RonakShah谢谢。我已根据您的评论更新了答案。