提问人:Froggy pete 提问时间:5/15/2023 更新时间:5/15/2023 访问量:114
SAS 检查每个 ID 和 Time 变量的两个值是否相同
SAS Check if for each ID and Time two values of a variable are the same
问:
我有以下SAS数据集:
data old;
Input id Brand $ hour mode $ symbol $;
datalines;
11 Mercedes 23 ab sv
11 Porsche 22 as fu
11 BMW 12 ge ba
11 Audi 12 jb mu
19 Mercedes 03 ne wi
12 Porsche 03 ne od
12 BMW 23 nt vs
12 Audi 11 ns oy
13 Mercedes 03 jr wi
13 Porsche 03 ms iv
13 BMW 12 dj te
13 Audi 21 nr oy
14 Mercedes 03 cr nw
14 Porsche 03 dn. qe
14 BMW 23 mr na
14 Audi 11 nd sy
15 Mercedes 09 nw se
15 Porsche 10 WD TI
15 BMW 15 mw yd
15 Audi 14 00 wi
16 Mercedes 16 nn ss
16 Porsche 16 kk dd
16 BMW 23 vv cc
16 Audi 18 jk 55
;
我想写一个程序。对于梅赛德斯和保时捷品牌,每个相似 ID 的小时变量不能相同。例如:如果梅赛德斯和保时捷品牌的 ID=17 的小时数=23,则应创建一个名为 error 的新变量。
我在编写此代码时遇到问题,因为我必须查看多个观察结果。
有人有想法吗?
我尝试过使用二维数组,但它并没有真正的意义。
答:
1赞
Reeza
5/15/2023
#1
在此处使用 BY 组处理,并检查小时是否是组的第一个/最后一个。
proc sort data=old;
by id hour;
run;
data want;
set old;
by id hour;
if not (first.hour and last.hour) then flag = 'Error';
run;
proc print data=want;run;
结果:
Obs id Brand hour mode symbol flag
1 11 BMW 12 ge ba Error
2 11 Audi 12 jb mu Error
3 11 Porsche 22 as fu
4 11 Mercedes 23 ab sv
5 12 Porsche 3 ne od
6 12 Audi 11 ns oy
7 12 BMW 23 nt vs
8 13 Mercedes 3 jr wi Error
9 13 Porsche 3 ms iv Error
10 13 BMW 12 dj te
11 13 Audi 21 nr oy
12 14 Mercedes 3 cr nw Error
13 14 Porsche 3 dn. qe Error
14 14 Audi 11 nd sy
15 14 BMW 23 mr na
16 15 Mercedes 9 nw se
17 15 Porsche 10 WD TI
18 15 Audi 14 00 wi
19 15 BMW 15 mw yd
20 16 Mercedes 16 nn ss Error
21 16 Porsche 16 kk dd Error
22 16 Audi 18 jk 55
23 16 BMW 23 vv cc
24 19 Mercedes 3 ne wi
您的 ID=17 示例不在您的数据中。
评论
1赞
Froggy pete
5/16/2023
谢谢!是的,我也刚刚注意到,一定是错别字
评论