簡體   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