m*********9 发帖数: 58 | 1 实在是SAS弱手,请教版上各位高人, 我有下面的数据:
ID1 date1 A 1
ID1 date2 A 1
ID1 date3 L 2
ID1 date4 L 2
ID1 date5 A 3
ID1 date6 A 3
ID2 date7 B 1
....
怎莫样做才能把最后一个column的数弄出来呢?对于每个ID来说,date是按时间顺序排
列的。
万分感谢,Bow// |
z**k 发帖数: 378 | 2 data newtable;
set oldtable (keep=_name_of_the_last_column_);
run;
【在 m*********9 的大作中提到】 : 实在是SAS弱手,请教版上各位高人, 我有下面的数据: : : ID1 date1 A 1 : ID1 date2 A 1 : ID1 date3 L 2 : ID1 date4 L 2 : ID1 date5 A 3 : ID1 date6 A 3 : ID2 date7 B 1 : ....
|
P****D 发帖数: 11146 | |
m*********9 发帖数: 58 | 4 不好意思,我没说明白,我是想怎莫根据前面的数据产生最后一个column, 多谢, :)
【在 P****D 的大作中提到】 : 没看懂。“弄出来”是什么意思?
|
g*******y 发帖数: 380 | 5 这个不叫‘弄’,也不叫“做”。 你要把你的逻辑说清楚,怎么才能得到一个新的变
量,而变量的值是根据前面的ID,date的组合产生的。
看起来似乎是每个ID分别有3个字母(A or L)代表的观察对象,每个对象又分别有两
个观测日,但是观测日不影响最后一个变量的值。你同时需要说明你的数据是否
consistently follow this rules。如果是的话,简单循环就可以了。如果每个ID下面
的观察对象数目会发生变化,retain, if first.ID, +1, until last.ID 之类的。 |
z**k 发帖数: 378 | 6 汗,要说清楚
data table_a;
input id $ date $ char $;
datalines;
ID1 date1 A
ID1 date2 A
ID1 date3 L
ID1 date4 L
ID1 date5 A
ID1 date6 A
ID2 date7 B
;
data table_b;
set table_a;
by id char notsorted;
if first.id then inx=0;
if first.char then inx+1;
;
run;
:)
【在 m*********9 的大作中提到】 : 不好意思,我没说明白,我是想怎莫根据前面的数据产生最后一个column, 多谢, :)
|
z**k 发帖数: 378 | 7 如果只写一个data step,要麻烦很多。高手解答一下吧
data table_c (drop=oldid oldchar);
length oldid $8.;
length oldchar $8.;
retain oldchar "-";
retain oldid "-";
input id $ date $ char $;
if id ne oldid then do
inx=0;
oldid=id;
end;
if char ne oldchar then do;
inx+1;
oldchar=char;
end;
datalines;
ID1 date1 A
ID1 date2 A
ID1 date3 L
ID1 date4 L
ID1 date5 A
ID1 date6 A
ID2 date7 B
; |
m*********9 发帖数: 58 | 8 非常感谢,:)
【在 z**k 的大作中提到】 : 如果只写一个data step,要麻烦很多。高手解答一下吧 : data table_c (drop=oldid oldchar); : length oldid $8.; : length oldchar $8.; : retain oldchar "-"; : retain oldid "-"; : input id $ date $ char $; : if id ne oldid then do : inx=0; : oldid=id;
|