sas 创建一个等于 obs 列的变量
sas create a variable that is equal to obs column
我有一个包含 10 个 obs 的文件。和不同的参数。我需要为我的数据添加一个 'ID' 的新变量,用于每个观察 - 即一列数字 1-10。
如何添加一个简单地等于 obs 列的变量?
我想过用一个循环来做,在 var 上定义一个空的 vat,运行 并且每次都在之前的观察中添加'1',但是,它看起来有点复杂。有更好的方法吗?
您可以使用数据步自动变量_n_
。这是数据步循环的迭代次数。
Data want;
set have;
ID = _n_;
run;
@DomPazz 的回答肯定有效!以防万一你想要 return 根据属性的观察数量,试试这个:
proc sort data= dataset out= sort_data;
by * your attribute(s) *;
data sort_data;
set sort_data;
by * your attribute(s) that is listed in above proc sort statement *;
if first.attribute then i=1; <=== first by group observation, number =1
i + 1; <==== sum statement (retaining)
if last.attribute and .... then ....; <=== whatever you want to do . Not necessary
run;
first
/ Last
对行运算很有帮助。
如果您选择 Proc SQL 解决方案,有两种方法:
1. 未记录:
proc sql;
create table want as
select monotonic() as row, *
from sashelp.class
;
quit;
已记录:
ods 上市结束;
ods 输出 sql_results=想要;
proc sql 数;
select * 来自 sashelp.class;
退出;
ods上市;
我有一个包含 10 个 obs 的文件。和不同的参数。我需要为我的数据添加一个 'ID' 的新变量,用于每个观察 - 即一列数字 1-10。 如何添加一个简单地等于 obs 列的变量? 我想过用一个循环来做,在 var 上定义一个空的 vat,运行 并且每次都在之前的观察中添加'1',但是,它看起来有点复杂。有更好的方法吗?
您可以使用数据步自动变量_n_
。这是数据步循环的迭代次数。
Data want;
set have;
ID = _n_;
run;
@DomPazz 的回答肯定有效!以防万一你想要 return 根据属性的观察数量,试试这个:
proc sort data= dataset out= sort_data;
by * your attribute(s) *;
data sort_data;
set sort_data;
by * your attribute(s) that is listed in above proc sort statement *;
if first.attribute then i=1; <=== first by group observation, number =1
i + 1; <==== sum statement (retaining)
if last.attribute and .... then ....; <=== whatever you want to do . Not necessary
run;
first
/ Last
对行运算很有帮助。
如果您选择 Proc SQL 解决方案,有两种方法: 1. 未记录:
proc sql;
create table want as
select monotonic() as row, *
from sashelp.class
;
quit;
已记录:
ods 上市结束; ods 输出 sql_results=想要;
proc sql 数; select * 来自 sashelp.class; 退出;
ods上市;