当months=1时,我想根据“ind”列中的值在新列中赋值;
idnum1 months ind new_col
1 1 X X
1 2 X X
1 3 Y X
1 4 Y X
1 5 X X
2 1 Y Y
2 2 Y Y
2 3 X Y
2 4 X Y
2 5 X Y
下面的查询只分配值x,其中months=1,但我要在所有行中为所有id添加新的列-
create table tmp as
select t1.*,
case when months = 1 then ind end as new_col
from table t1;
我正在尝试用procsql在sas中实现它;
4条答案
按热度按时间yuvru6vn1#
理想情况下,您可以在数据步骤中使用retain:
sql在这方面不如数据步骤好。
但是假设变量id重复,那么这就行了。如果不是这样,那么您确实需要数据步方法。
编辑:如果你想保留每个id的第一个,只需使用第一个。而不是月=1。
ltskdhd12#
健壮的
Proc SQL
声明,处理可能重复的第一个月的情况,选择最低ind
分发给小组7cjasjjr3#
可以使用窗口函数:
g52tjvyc4#
如果每个小组只有一个月=一次观察,那么就使用简单的连接。