我有一个类似下面的玩具数据集的数据集:
s=structure(list(month_id = c(202306L, 202305L, 202307L, 202305L,
202306L, 202307L), MDM_Key = c(1L, 1L, 1L, 2L, 2L, 2L), sale_count = c(NA,
19161L, NA, 17726L, NA, NA), iek_max_discount = c(0.5356, 0.5256,
0.5456, 0.559, 0.569, 0.589)), class = "data.frame", row.names = c(NA,
-6L))
另一个数据集的系数
cf=structure(list(MDM_Key = 1:2, ML.coef = c(1.46, 1.67)), class = "data.frame", row.names = c(NA,
-2L))
iek_max_discount
是百分比值,即不是0.5356,而是53.56
我需要每个mdm_key
(组变量,来自cf
)的每个系数乘以当前上个月(来自s
数据集)的相应iek_max_discount
(到相应mdm_key
)值。
例如,现在的月份是五月。这意味着对于mdm_key =1
,我们取系数1.46并乘以June的值(month_id=202306
和1,46*53,56=78
)。
结果值也是百分比;现在,让我们计算初始值sale_count
的78%的比例是多少(它也仅针对当月呈现)。19161/100*78=14945
。
然后,结果必须添加到19161和总和插入到六月。
类似地,我们为7月(month_id=202307
)执行此操作;乘以系数1,46*54,56=79
。计算比例:19161/100*79=15137
我们将结果值添加到19161,并将结果插入到7月份。
例如,mdm_key=1的所需输出
month_id MDM_Key sale_count iek_max_discount percent prop final
202306 1 0,5356 78 14945 34106
202305 1 19161 0,5256
202307 1 0,5456 79 15137 34298
在对mdm_key=2(或任何其他mdm_key,如果有的话)执行相同的过程之后
做这样一系列算术运算的最好和最简单的方法是什么?
3条答案
按热度按时间js4nwp541#
假设每个 MDM_Key 的 * 销售_count* 总是存在第一个月
axkjgtzd2#
rn0zuynd3#
我有点难以理解你想做什么。以下是我最好的猜测: