如下是个透视后的spark data frame,period_x列中的值代表这个阶段个产品的销售数量
storeid | productid | period_1 | period_2 | period_3 | period_4 | period_5 |
a | 1 | 0 | 2 | 5 | 0 | NaN |
a | 2 | NaN | 6 | 7 | 1 | 0 |
b | 1 | 3 | 3 | 0 | 2 | 3 |
b | 2 | NaN | NaN | 3 | 0 | 1 |
b | 3 | NaN | NaN | NaN | 4 | 2 |
c | 1 | 1 | 0 | NaN | 3 | 0 |
我想要计算每个产品在五个阶段的销售数量和频率,计算频率的公式是这个产品这一阶段和上两阶段不能有NaN,例如,产品1在第四阶段的频率2,因为第六行的产品1在period_3的销售数量是NaN,所以产品1在第四阶段的频率就是第一行和第三行。
最终通过用sparkR得出以下结果:
productid | periodid | frequent | p_median |
1 | 1 | 3 | (0+3+1)/3 |
1 | 2 | 3 | (2+3+0)/3 |
1 | 3 | 2 | (5+0)/2 |
1 | 4 | 2 | (0+2)/2 |
1 | 5 | 1 | 3/1 |
2 | 4 | 1 | 1/1 |
2 | 5 | 2 | (0+1)/2 |
PS:
如果有大牛能贴出如何实现或者大致代码,可以私下联系我,我会发个小红包表示感激。如果觉得问题没有描述清楚也可以私下联系我。感谢!
微信:13795308585