sas按组将最后一个值更改为第一个值
我想更改表单的数据sas按组将最后一个值更改为第一个值,sas,Sas,我想更改表单的数据 id value 1 1 1 1 1 2 2 7 2 7 2 7 2 5 . . . . . . 到 也就是说,按组列出的最后一个值应该是按组列出的第一个值。我尝试了以下代码 data want; set have; by id; last.value=first.value; run; 但那没用。有人能帮我吗?您应该先将.id值保存在变量中并保留它 您应该将first.id值保存
id value
1 1
1 1
1 2
2 7
2 7
2 7
2 5
. .
. .
. .
到
也就是说,按组列出的最后一个值应该是按组列出的第一个值。我尝试了以下代码
data want;
set have;
by id;
last.value=first.value;
run;
但那没用。有人能帮我吗?您应该先将.id值保存在变量中并保留它
您应该将first.id值保存在变量中并保留它
这里的问题是first.value和last.value:
不要持有实际值,他们只会告诉你观察结果是分组中的第一个还是最后一个
无法分配-last.value=语法无效
其次,只有在by语句中声明了value变量时,才能设置first.value和last.value。您应该改用first.id和last.id
我们需要做的是:
检查我们是否正在查看基于id的BY组中的第一个观察结果
保持value变量的值,直到达到最后一个id值
当我们查看最后一个id值时,请设置步骤1中的值。
Alexey的回答涵盖了执行此操作所需的实际语法。下面是first.id/last.id值的外观。您始终可以通过添加put u all_u;进入您的数据步骤:
id value first.id last.id tValue
1 1 1 0 1
1 1 0 0 1
1 2 0 1 1
2 7 1 0 7
2 7 0 0 7
2 7 0 0 7
2 5 0 1 7
. .
. .
. .
这里的问题是first.value和last.value:
不要持有实际值,他们只会告诉你观察结果是分组中的第一个还是最后一个
无法分配-last.value=语法无效
其次,只有在by语句中声明了value变量时,才能设置first.value和last.value。您应该改用first.id和last.id
我们需要做的是:
检查我们是否正在查看基于id的BY组中的第一个观察结果
保持value变量的值,直到达到最后一个id值
当我们查看最后一个id值时,请设置步骤1中的值。
Alexey的回答涵盖了执行此操作所需的实际语法。下面是first.id/last.id值的外观。您始终可以通过添加put u all_u;进入您的数据步骤:
id value first.id last.id tValue
1 1 1 0 1
1 1 0 0 1
1 2 0 1 1
2 7 1 0 7
2 7 0 0 7
2 7 0 0 7
2 5 0 1 7
. .
. .
. .
id value first.id last.id tValue
1 1 1 0 1
1 1 0 0 1
1 2 0 1 1
2 7 1 0 7
2 7 0 0 7
2 7 0 0 7
2 5 0 1 7
. .
. .
. .