R创建含重复值的销售数据集结构混乱如何修复?
原代码的核心问题是维度列的重复逻辑错误,直接对年份、销售、产品三个向量各自重复16次,会导致销售-年份-产品的对应关系完全错乱,同时没有实现数值转整数、新增销售成本和收益列的要求。
修正后的完整代码
# 生成所有维度的唯一笛卡尔积,确保对应关系不会错乱 df <- expand.grid( Years = 2018:2021, Sales = c("Chris","Lucas","Cara","Bia"), Product = c("Mars","Snickers","Bounty","Milkyway") ) # 生成500-1000区间的整数营业额,runif max+1是为了覆盖到1000的整数值 df$Turnover <- as.integer(runif(nrow(df), min = 500, max = 1001)) # 生成50-150区间的整数销售成本 df$CostofSales <- as.integer(runif(nrow(df), min = 50, max = 151)) # 计算收益列 df$Earnings <- df$Turnover - df$CostofSales # 查看最终数据集 View(df)
说明
- 使用
expand.grid可以直接生成所有维度的唯一组合,不需要手动计算重复次数,彻底避免对应关系错乱的问题 as.integer会截断浮点数的小数部分,因此给runif的max参数加1,才能保证生成的整数覆盖到要求的区间上限- 最终数据集共64行,正好对应
4年 × 4名销售 × 4种产品的所有组合,符合需求
内容的提问来源于stack exchange,提问作者lkasquilici
相关产品推荐
相关产品推荐

