R模拟订单历史数据集 生成天气分类因子列实现方法问询
实现方法
你可以直接使用sample()函数完成随机抽样,注意开启有放回抽样即可适配任意长度的数据集,两种实现写法如下:
写法1:基础向量运算版(效率更高,适合大数据集)
library(dplyr) skies1 <- c("Clear", "Rain", "Snow") skies2 <- c("Clear", "Rain") # 固定随机种子方便结果复现,不需要可删除 set.seed(123) data <- data %>% mutate(weather = ifelse( season == "Winter", sample(skies1, n(), replace = TRUE), sample(skies2, n(), replace = TRUE) ))
写法2:逐行处理版(逻辑更直观,适合小数据集)
library(dplyr) skies1 <- c("Clear", "Rain", "Snow") skies2 <- c("Clear", "Rain") set.seed(123) data <- data %>% rowwise() %>% mutate(weather = ifelse( season == "Winter", sample(skies1, 1), sample(skies2, 1) )) %>% ungroup() # 取消行分组,避免影响后续数据操作
可选调整
如果需要自定义不同天气的出现概率,可以给sample()添加prob参数,比如让冬季80%概率晴天、10%下雨、10%下雪:
sample(skies1, n(), replace = TRUE, prob = c(0.8, 0.1, 0.1))
内容的提问来源于stack exchange,提问作者amatof
相关产品推荐
相关产品推荐

