sas - SAS - 创建表
问题描述
我有两个有输出的模型:
output out=m1 pred=p1;
output out=m2 pred=p2;
它们运行良好并创建以下示例观察:
M2样品
Obs p1
1 0.98057
2 0.71486
3 0.91951
4 0.93073
5 0.93505
6 0.98788
7 0.94461
8 0.99449
9 0.93282
10 0.88654
和
M1样品
Obs p2
1 0.97988
2 0.70704
3 0.91731
4 0.92880
5 0.93324
6 0.98746
7 0.94386
8 0.99431
9 0.93102
10 0.88404
接下来我尝试将两者组合成一个带有语句的表:
proc sql;
create table ptable as select *
from m1 as a left join m2 as b on a.cnt=b.cnt;
quit;
但我收到此错误:错误:在使用相关名称 A 标识的表/视图中找不到列 cnt。错误:在使用相关名称 A 标识的表/视图中找不到列 cnt。错误:在用相关名称 B 标识的表/视图中找不到列 cnt。错误:在用相关名称 B 标识的表/视图中找不到列 cnt。
那么如何将 p1 和 p2 放入 SAS 中的表中呢?
下面是用于生成 p1 和 p2 的代码,其中 DATA = source
/*initial model*/
proc hplogistic data=DATA;
model value(event='1')=X1-X20;
output out=m1 pred=p1;
run;
/*new model*/
proc hplogistic data=data;
model value(event='1')=X1-X20;
output out=m2 pred=p2;
run;
解决方案
这是在没有by
语句的情况下执行合并的情况。这些表将逐行连接。
例如
data have1(keep=p1) have2(keep=p2);
do _n_ = 1 to 10;
p1 = 1 / _n_;
p2 = _n_ ** 2;
output;
end;
run;
data want;
merge have1 have2;
*** NO BY STATEMENT ***;
run;
proc print data=want;run;
-------- OUTPUT --------
Obs p1 p2
1 1.00000 1
2 0.50000 4
3 0.33333 9
4 0.25000 16
5 0.20000 25
6 0.16667 36
7 0.14286 49
8 0.12500 64
9 0.11111 81
10 0.10000 100
在我通常做的数据处理中,没有 BY 的合并是非典型的。
推荐阅读
- android - 如何在 2x2 网格布局中实现原生 android 库以在一秒钟内检测触摸?
- sql - 通过多个选择/下拉列表过滤我的结果,每个选择/下拉列表将接受多个值
- java - QAF:com.qmetry.qaf.automation.step.StepInvocationException:无法实例化 JavaStep:
- c# - 将附件上传到 Dynamics CRM 时设置相关参考时出现问题
- sql - 在 cassandra 和 sql 中连接表
- javascript - 如何在块引用文本 HTML 旁边添加星号?
- asp.net - 我正在尝试在我的索引页面中包含两个模型
- go - 如果在循环中调用父函数,是否会复制从父函数传递到作为 goroutine 运行的闭包的参数?
- python - S3ResponseError:使用 boto 进行多部分上传期间出现 400 Bad Request
- php - Laravel 6.2:Laravel“与”不符合条件