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
.     .
.     .
.     .