跨行 CSV 成本数据的蒙特卡罗模拟(三角分布)

缺口

我有一个包含成本估算的 csv 列表,每行包含非 R 用户在 excel 中准备的每个行项目估算的下限 (l)、中央 (c) 和上限 (u) 范围估算。我读入 R 的 CSV 数据示例如下:

         Item     l     c     u
        <chr> <int> <int> <int>
1 “CostItem1”  1500  1900  2600
2 “CostItem2”  2400  3200  4400
3 “CostItem3”   500  1000  1500

然后将每一行用于三角形分布函数 (library(triangle)) 中,如下所示,经过多次迭代(在这种情况下为 10000 次):

CostItem1 <- rtriangle(runs, l, u, c)

我目前在 rtriangle 函数中手动输入每个成本项目(CostItem1、CostItem2 等)的范围估计数据。

我的问题是:

在将 CSV 文件读入 R 时,如何创建循环函数或其他方法来直接从 CSV 文件执行此操作?作为一个新手,我不知道如何解决这个问题,所有的谷歌搜索都没有透露任何信息。

然后将成本项目数据合并到一个新的数据框 (TotalCostEstimate) 中,该数据框包含 10000 次模拟,每行求和以提供建模的总成本数据 (TotalCost):

 TotalCostEstimate<-data.frame(CostItem1 ,CostItem2 ,TotalCost=rowSums(x)) 

从这里可以绘制和呈现数据以进行分析和决策。对于少量成本项目,手动输入还不错,但有时我的行数大于 50,我不想这样做 50 次以上!!

非常感谢您花时间看这个。

马丁平底船

与其直接从 CSV 中执行此操作,不如将 CSV 读入矩阵,创建总成本矩阵,然后运行 ​​for 循环来模拟这些值。

例如以这种方式:

runs<-1000 #Set number of runs
Info_costs<- read.csv( "Your_file_name.csv") #Read in the information
Total_cost_items<-matrix(,nrow=runs,ncol=length(Info_costs$Item)) #Create an empty matrix to contain your simulations
for (i in 1:length(Info_costs$Item))
   {Total_cost_items[,i]<-rtriangle(n=runs,Info_costs$l[i],Info_costs$u[i],Info_costs$c[i]) } 
#Fill the matrix
Total_cost_items<-data.frame(Total_cost_items, rowSums(Total_cost_items)) #append the matrix with the row sums

您可能需要使用选项调整 read.csv 函数,当然还有正确的文件名,以便它正确读取您的文件。您也可以稍后将数据框的列重命名为更有用的内容

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章