本文介绍了如何使用 SAS 计算除法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想计算adjusted_volume变量,如下所示;
I want to calculate adjusted_volume variable as I show below;
+------+------+---------------+-------------+-----------------+ | name | date | CountedVOLUME | DailyVolume | adjusted_volume | +------+------+---------------+-------------+-----------------+ | A | 1 | 10 | | | | A | 1 | 11 | 21 | | | A | 2 | 12 | | | | A | 2 | 13 | | | | A | 2 | 14 | 39 | | | A | 3 | 15 | 15 | | | A | 4 | 16 | 16 | | | A | 5 | 17 | | | | A | 5 | 18 | | | | A | 5 | 19 | | | | A | 5 | 20 | 74 | | | A | 6 | 21 | 0.127272727 | | | A | 6 | 22 | 43 | 0.133333333 | | B | 1 | 10 | | | | B | 1 | 11 | 21 | | | B | 2 | 12 | | | | B | 2 | 13 | | | | B | 2 | 14 | 39 | | | B | 3 | 15 | 15 | | | B | 4 | 16 | 16 | | | B | 5 | 17 | | | | B | 5 | 18 | | | | B | 5 | 19 | | | | B | 5 | 20 | 74 | | | B | 6 | 21 | 0.127272727 | | | B | 6 | 22 | 43 | 0.133333333 | +------+------+---------------+-------------+-----------------+Adjusted_volume = CountedVOLUME/(五天前的 DailyVolumes 总和)
Adjusted_volume = CountedVOLUME/ (Summation of DailyVolumes in five days before)
为了简单起见,我对 A 和 B 使用相同的数字.
I use same number for A and B just for simplicity.
我该怎么做?
推荐答案这会产生您列出的示例结果.既然你说你想计算 adjusted_volume,我假设 dailyVolume 已经存在于你的基础数据集中.
This produces exactly the sample result you listed. Since you said you wanted to compute adjusted_volume, I assumed dailyVolume is already present in your base dataset.
data have; infile datalines dlm='|' missover; input name $ date countedvolume dailyvolume; datalines; A|1|10 A|1|11|21 A|2|12 A|2|13 A|2|14|39 A|3|15|15 A|4|16|16 A|5|17 A|5|18 A|5|19 A|5|20|74 A|6|21| A|6|22|43 B|1|10 B|1|11|21 B|2|12 B|2|13 B|2|14|39 B|3|15|15 B|4|16|16 B|5|17 B|5|18 B|5|19 B|5|20|74 B|6|21| B|6|22|43 ; run; data want (drop=cnt dv_:); set have; by name date; retain dv_1 dv_2 dv_3 dv_4 cnt 0 dv_sum; if first.name then do; cnt=0; dv_1=0; dv_2=0; dv_3=0; dv_4=0; dv_sum=0; end; adjusted_volume=countedvolume/dv_sum; if last.date then do; cnt=cnt+1; if cnt=1 then dv_4=dailyvolume; else if cnt=2 then dv_3=dailyvolume; else if cnt=3 then dv_2=dailyvolume; else if cnt=4 then dv_1=dailyvolume; else do; dv_sum=dailyvolume+dv_1+dv_2+dv_3+dv_4; dv_4=dv_3; dv_3=dv_2; dv_2=dv_1; dv_1=dailyvolume; end; end; run;更多推荐
如何使用 SAS 计算除法?
发布评论