首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行代码,同时按两个变量分层。

运行代码,同时按两个变量分层。
EN

Stack Overflow用户
提问于 2022-09-18 11:07:57
回答 1查看 28关注 0票数 0

假设有以下简单情况(仅用于解释目的)。原始数据显示更为复杂):

data have; input ID :$20. Label1 :$20. Label2 :$20. Hours :$20.; cards; 0001 rep1 w 345 0001 rep1 f 985 0001 rep1 w 367 0001 rep2 w 65 0001 rep2 w 123 0001 rep2 f 120 0002 rep6 f 45 0002 rep6 w 657 0002 rep6 w 45 0002 rep1 w 567 0002 rep1 f 78 0002 rep1 w 9 ..... .... ... ... ;

我想求和,预先确定与"w“对应的时间,但也按Label1分层,即rep*。我用:

数据需要;设置有;由ID Label1;如果first.ID .如果last.ID .跑;

虽然我能够按ID分层,但我不能按Label1分层。是否可以这样写:如果first.ID和first.Label1那么.?在进行一些尝试时,SAS还给了我以下错误:"by变量没有在数据集上正确排序“。输入数据按ID排序。

提前谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-11 11:19:42

显然,正如您所说的,输入数据是按ID排序的,因此可以使用first.ID,但是数据不是按标签排序的,因此不能使用first.label。如果要同时使用这两个变量,则必须同时对两个变量进行排序:

代码语言:javascript
复制
 proc sort data=have;
   by ID label;
 quit;

但请记住,在您的示例数据中,不仅有一个用于first.label=1的label=rep1,而且有两次:

代码语言:javascript
复制
                        first.ID     first.label
0001    rep1   w  345      1           1
0001    rep1   f  985      0           0
0001    rep1   w  367      0           0
0001    rep2   w  65       0           1
0001    rep2   w  123      0           0
0001    rep2   f  120      0           0
0002    rep1   w  567      1           1
0002    rep1   f  78       0           0
0002    rep1   w  9        0           0
0002    rep6   f  45       0           1
0002    rep6   w  657      0           0
0002    rep6   w  45       0           0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73762223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档