如何在R语言中将数值均匀分配到指定年份?
R语言实现产品数量按年份均匀拆分
首先注意你的原始数据中QTY列是字符类型,需要先转换为数值类型才能进行除法运算。下面提供两种实现方式:
方法一:基础R实现
# 转换QTY为数值型 df$QTY <- as.numeric(df$QTY) # 计算每个产品每年分配的数量 year_count <- length(years) df$annual_qty <- df$QTY / year_count # 生成产品与年份的全组合 product_year <- expand.grid(product = df$product, Year = years) # 合并数据并整理列顺序 result <- merge(product_year, df[, c("product", "annual_qty")], by = "product") result <- result[, c("product", "annual_qty", "Year")] colnames(result)[2] <- "QTY" # 保留一位小数(和示例格式一致) result$QTY <- round(result$QTY, 1) # 查看结果 result
方法二:tidyverse工具包实现
如果你习惯用tidyverse的语法,可以这样做:
library(dplyr) library(tidyr) df %>% mutate(QTY = as.numeric(QTY), # 将年份列表绑定到每个产品行 Year = list(years), # 计算每年分配的数量 QTY = QTY / length(years)) %>% # 展开年份列表为多行 unnest(Year) %>% # 保留一位小数 mutate(QTY = round(QTY, 1)) %>% # 调整列顺序 select(product, QTY, Year)
运行上述代码后,就能得到你期望的按年份拆分后的结果,每个产品的数量会均匀分配到指定的所有年份中。
内容的提问来源于stack exchange,提问作者Trae
相关产品推荐
相关产品推荐

