对于每个Codinv和Class,我想总结一下D列中列出的前几年的值。
谢谢Rigerta。这是我的新请求。现在我考虑到这一点,当每个CodInv每个类只有一行时,它应该显示与D相同的值。因此,我想要一个新列计算如下
Codinv Class year D NewColumn
----------------------------------------------------------
13 C08F 1977 5 5
76 C01B 1999 1 1
76 C21D 2005 2 2
76 C23C 1998 2 2
76 C23C 1999 2 4
我会按如下方式更改代码,但仍无法正常工作
当我在线阅读时,我尝试了
data Want;
set Have;
by Codinv Class year;
retain NewColumn;
if first.Class then NewColumn=D; output;
if last.year NewColumn=NewColumn+D;
run;
在我按照Codinv和Year排序的情况下,我必须做的其他分析工作得很好,现在我正在做三个我尝试了不同的变化,但它显示所有行的缺失数据或0 ... Can你救我了?永远感激
答案 0 :(得分:1)
你接近你的尝试,我已经修改它以产生所需的输出。我所做的更改总结如下:
retain
声明。我使用的方法采用自动保留,因此没有必要。output
声明。这在数据步骤结束时暗示,因此不需要。if last.year...
行,因为没有必要严格地说,在by
语句中使用年份不是必需的,但保留以确保数据正确排序非常有用。
data have;
input Codinv Class $ year D;
datalines;
13 C08F 1977 5
76 C01B 1999 1
76 C21D 2005 2
76 C23C 1998 2
76 C23C 1999 2
;
run;
data Want;
set Have;
by Codinv Class year;
if first.Class then NewColumn=0;
newcolumn+D;
run;