【发布时间】:2016-03-29 21:34:18
【问题描述】:
我有两个数据集。他们的主题是同一组,但不同的研究人员抽取了不同的“样本”。因此,
我无法识别匹配项(即两个样本中的 Peter Smith),
虽然含义相同,但变量的名称不同,
- 变量位于数据集的不同位置
现在我想比较这两个数据集,看看它们作为一个整体有多相似。我考虑过比较我知道它们具有相同含义的变量的频率输出。
到目前为止,我的解决方案在我看来相当繁琐,因为我必须为每个变量组合执行所有步骤。
有没有更优雅/高效的解决方案?
我还想比较数值变量的平均值、中位数、百分位数。
非常感谢您!
格瑞特
这是我当前的解决方案示例。我以不同的方式命名了这些观察结果,因为在我的原始文件中,我无法从 ID 变量中分辨出哪个观察结果。
data have1;
input Name $ road means goal ;
datalines;
adam 1 3 0
bob 1 1 1
clint 2 2 0
dean 3 1 1
eric 2 1 0
flint 1 2 1
gerald 3 1 1
;
run;
data have2;
input Name $ street finish other purpose ;
datalines;
harry 2 1 0 3
idefix 1 0 0 2
john 3 1 1 2
kelvin 1 0 2 2
liam 2 1 2 1
max 3 1 2 1
nero 2 0 1 3
ovid 3 0 2 3
;
run;
proc freq data=have1;
tables road / out= fhave1road
(rename=(percent=pct1 count=count1));
quit;
proc freq data=have2;
tables street / out= fhave2street
(rename=(street = road percent=pct2 count=count2));
quit;
data comb;
merge fhave1road fhave2street;
by road;
diffpct = pct1 - pct2;
diffct = count1 - count2;
run;
proc print data = comb;
var road count1 count2 diffct pct1 pct2 diffpct;
quit;
proc means data=have1;
var road;
output out=mhave1road ;
quit;
proc sort data=mhave1road;
by _STAT_;
quit;
proc means data=have2;
var street;
output out=mhave2street ;
quit;
proc sort data=mhave2street;
by _STAT_;
quit;
data mcomb (keep=_STAT_ road street diff) ;
merge mhave1road mhave2street;
by _STAT_;
diff = road-street;
run;
proc print data = mcomb;
quit;
【问题讨论】:
-
不要合并不相关的数据集!幸运的是,他们有相同数量的观察结果,并且您的统计数据很有意义,但是您创建的数据集是垃圾。