R 基于条件的分布抽样

R 基于条件的分布抽样,r,if-statement,sampling,R,If Statement,Sampling,我正在制作一个数据集,供学生练习假设测试。数据应包含生产施工设备车辆的虚拟处理时间。车辆有不同的类型和可能影响处理时间的不同选项。根据加工时间和机器规格,学生将调查哪些因素显著影响加工时间,并预测生产具有特定配置的特定机器所需的时间 数据集的最终目标是生成每台机器的总处理时间。本质上,(总)处理时间应该是基本时间+选项1时间+选项2时间+选项3时间+等的累积。…。每个选项都要从分布中随机抽样,以避免过于明显。只有总时间将提供给学生,但我需要的选项时间来构建总时间 我知道如何使用rnorm()和其

我正在制作一个数据集,供学生练习假设测试。数据应包含生产施工设备车辆的虚拟处理时间。车辆有不同的类型和可能影响处理时间的不同选项。根据加工时间和机器规格,学生将调查哪些因素显著影响加工时间,并预测生产具有特定配置的特定机器所需的时间

数据集的最终目标是生成每台机器的总处理时间。本质上,(总)处理时间应该是基本时间+选项1时间+选项2时间+选项3时间+等的累积。…。每个选项都要从分布中随机抽样,以避免过于明显。只有总时间将提供给学生,但我需要的选项时间来构建总时间

我知道如何使用rnorm()和其他发行版进行随机采样。但我不知道如何仅根据列的内容有条件地生成数据

数据集看起来像这样

Machine                  <-   c(1,2,3,4,5,6,7,8,9,10)
Pump.Option              <-   c("30 Liter", "40 Liter", "30 Liter", "30 Liter", "30 Liter", "30 Liter", "50 Liter", "30 Liter", "30 Liter", "40 Liter")
Piping.Option            <-   c("No special piping", "No special piping", "special piping", "No special piping", "special piping", "No special piping", "No special piping", "special piping", "special piping", "No special piping")
Lights.Option            <-   c("Std light", "Std & Addional", "Std & Addional","Std & Addional", "Std & Addional", "Std & Addional", "Std light", "Std & Addional", "Std & Addional", "Std & Addional")
Valve.Option             <-   c("Safety valve", "Safety valve", "Normal valve", "Normal valve", "Safety valve", "Normal valve", "Safety valve", "Safety valve", "Normal valve", "Safety valve")
Pump.Time                <-   NA       
Piping.Time              <-   NA
Lights.Time              <-   NA
Valve.Time               <-   NA
Total.Time               <-   NA


DF.Sample                <- data.frame(Machine, Pump.Option, Piping.Option, Lights.Option, Valve.Option, Pump.Time, Piping.Time, Lights.Time, Valve.Time, Total.Time)

Machine对此,您可以在
时使用dplyr的
case\u,与一组嵌套的
ifelse
语句相比,它提供了相对干净的语法:

库(dplyr)
DF.样本%>%
变异(泵送时间=情况_)(
泵。选项==“30升”~0,
泵选项==“40升”~r形式(n(),平均值=10,标准差=4),
泵。选项==“50升”~r形式(n(),平均值=20,标准差=10)
), 
管道。时间=情况(
管道。选项==“无特殊管道”~0,
管道。选项==“特殊管道”~r形式(n(),平均值=10,sd=4)
),
Lights.Time=案例时间(
灯光。选项==“标准灯光”~0,
Lights.Option==“标准和附加”~rnorm(n(),平均值=10,标准差=4)
)
)
#>机械泵。选配管道。选配灯。选配阀。选配
#>1 1 30升无特殊管道标准光安全阀
#>2 40升无特殊管道标准和附加安全阀
#>3 30升特殊管道标准阀和附加标准阀
#>4 30升无特殊管道标准阀和附加正常阀
#>5 30升特殊管道标准和附加安全阀
#>6 30升无特殊管道标准阀和附加正常阀
#>7 50升无特殊管道标准光安全阀
#>8 30升特殊管道标准和附加安全阀
#>9 30升特殊管道标准和附加标准阀
#>10 40升无特殊管道标准和附加安全阀
#>泵。时间管道。时间灯。时间
#> 1   0.000000    0.000000    0.000000
#> 2   4.956528    0.000000   17.716970
#> 3   0.000000   11.051394   10.142101
#> 4   0.000000    0.000000   11.886158
#> 5   0.000000   15.291671    6.745524
#> 6   0.000000    0.000000    5.228694
#> 7  21.520437    0.000000    0.000000
#> 8   0.000000    9.777887    9.222347
#> 9   0.000000   11.219067   14.726647
#> 10 12.761031    0.000000    6.111458
数据


DF.Sample非常感谢您的快速回复!该解决方案非常有效,语法非常清晰,易于使用。这完美地解决了我的问题!