我有两个sas数据集
答案数据集
$(document).ready(function(){
var nav = $('.topmenu');
var top = $(".topmenu").height();
$(window).scroll(function () {
if ($(window).scrollTop() > top ) {
nav.addClass("sticky");
} else {
nav.removeClass("sticky");
}
});
});
关键数据集
id A1 A2 A3 A4
1 A B C D
2 B B C A
3 A A D D
问题是SAS是否有办法循环通过第一个数据集中的观察结果,并将它们与第二个数据集中的唯一观察结果进行比较。我对SAS很陌生,所以一切都会有所帮助
答案 0 :(得分:2)
循环由数据步骤处理 - 它自动完成。
要将一行附加到另一个数据集中的所有行,这非常简单:
data want;
if _n_=1 then set have_onerow;
set have;
run;
只有在变量名称不同的情况下才有效 - 但是这会将has_onerow中的行追加到所有的has行(因为SET中的变量会自动保留)。
这不会为你做比较 - 你必须这样做。
但是,有一种方法可以使用它来生成proc compare
数据集。只保留ID并执行上述操作:然后每个ID重复一次密钥。然后proc compare
将为您执行此操作 - 请查看the documentation以获取有关哪些选项为您提供输出数据集中正确信息的更多信息。
data have;
input id A1 $ A2 $ A3 $ A4 $ ;
datalines;
1 A B C D
2 B B C A
3 A A D D
;;;;
run;
data key;
input a1 $ a2 $ a3 $ a4 $;
datalines;
A B C D
;;;;
run;
data key_allrows;
if _n_=1 then set key;
set have (keep=id);
run;
proc compare base=key_allrows compare=have out=compare;
by id;
run;
答案 1 :(得分:1)
proc sort data=a; by a1 a2 a3 a4; run;
proc sort data=b; by a1 a2 a3 a4; run;
data c;
merge a(in=ina) b(in=inb)
by a1 a2 a3 a4;
if inb then b='Ý';
run;
它为匹配的
创建数据集a,其中指标b ='Ý'