我有一个包含成本估算的 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] 删除。
我来说两句