如何在R Dataframe中基于权重随机抽样新增班次列?
可以实现该需求,你的代码存在几处错误,修正后即可完成:
原代码的问题:
sample()第一个参数传入了整个df2数据框,应指定为班次选项列df2$shift- 权重参数
prob中使用了错误的对象名df$weight,正确应为df2$weight - 未指定抽样数量
size,默认仅抽取1个样本,需设置为nrow(df1)匹配df1的行数
修正后的代码:
df1$shift <- sample(df2$shift, size = nrow(df1), prob = df2$weight, replace = TRUE)
代码说明:
df2$shift:指定从班次选项列表中抽取样本size = nrow(df1):抽取与df1行数一致的样本,确保每一行都分配到班次prob = df2$weight:按照df2定义的权重抽样,Morning被选中的概率为0.8,Evening为0.2replace = TRUE:开启重复抽样,满足多行分配班次的需求
内容的提问来源于stack exchange,提问作者Ryan Gary
相关产品推荐
相关产品推荐

