繁体   English   中英

有没有办法在涉及 sumif 的 R 中复制 Excel 的目标查找

[英]Is there a way to replicate Excel's goal seek in R involving sumif

我有一个我认为相当简单的问题,但我似乎没有找到解决方案。

这是一个可重现的例子

Cost <- c(100,200,300,400,500)
Savings <- c(10,20,30,40,50)
Fees <- c(20,20,20,20,20)

Data <- data.frame(Cost,Savings,Fees)
ROI <- function(x) {
    sum(subset(Data,Cost>=x)$Savings)/sum(subset(Data,Cost>=x)$Fees)
    }

基本上我想找到成本 (x) 的最佳值,这将使 ROI = 2

在 Excel 中我所做的是

假设您分别在 A、B 和 C 列中有成本、储蓄和费用。

在单元格 E2 中,我写了下面的函数

SUMIF($A$2:$A$6,H2,$B$2:$B$6)/SUMIF($A$2:$A$6,H2,$C$2:$C$6)

其中 H2 具有以下功能:CONCATENATE(">",G2)

G2 是这里感兴趣的参数。

然后我去数据假设分析>目标寻求

通过更改 G2 将单元格 E2 设置为值 2

有没有办法在 R 中复制 Excel 的步骤? 谢谢!

R中的PS,如果我这样做了
投资回报率 (201) 或投资回报率 (299)
我得到 2
我想找的是201。

您可以尝试使用uniroot()函数来查找 ROI 函数 - 2 ==0 处的值 x。

Cost <- c(100,200,300,400,500)
Savings <- c(10,20,30,40,50)
Fees <- c(20,20,20,20,20)

Data <- data.frame(Cost,Savings,Fees)

ROI <- function(x, targetROI) {
   y<-sum(subset(Data,Cost>=x)$Savings)/sum(subset(Data,Cost>=x)$Fees)
   y-targetROI
}

uniroot(ROI, c(0,500), targetROI=2)

注意由于您的函数存在阶跃变化,因此该函数从 x=201 到 x=300 有多个根

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM