全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2155 4
2010-03-07
以下这个程序,按照SAS document应该是打印出四个column的:X, A, X, B. 但实际中只有3个:X, A, B.

Log 中error message:
515  on one.x=two.x;
WARNING: Variable X already exists on file WORK.MERGE.

我如果把第二个X改叫Y后就没事了。打印X, A, Y, B.  


这个程序如果换成outer union的话,也是一样的结果。看来我的SAS不接受一个table中同时存在两个X column.  但不知道为什么书上会给出XAXB形式的答案。

难道是有些版本的SAS开始不允许重名的Variable了?请问有没有人有相关经验。PDV允许有两个X存在么?谢谢!

--------------------------------------------
data one;

input X A $;

datalines;

1 a

2 b

4 d

;
run;
data two;

input X B $;

datalines;

2 x

3 y

4 v

;
run;
proc sql;
   create table work.merge as
   select *
   from one
   full join
   two
   on one.x=two.x;
run;
proc print data=merge;
   title "merge";
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-3-7 21:42:24
那你书上是什么样子,你列出来我们有一起分析哈
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-3-7 22:14:43
dolphinfish 发表于 2010-3-7 21:20
以下这个程序,按照SAS document应该是打印出四个column的:X, A, X, B. 但实际中只有3个:X, A, B.

Log 中error message:
515  on one.x=two.x;
WARNING: Variable X already exists on file WORK.MERGE.

我如果把第二个X改叫Y后就没事了。打印X, A, Y, B.  


这个程序如果换成outer union的话,也是一样的结果。看来我的SAS不接受一个table中同时存在两个X column.  但不知道为什么书上会给出XAXB形式的答案。

难道是有些版本的SAS开始不允许重名的Variable了?请问有没有人有相关经验。PDV允许有两个X存在么?谢谢!

--------------------------------------------
data one;

input X A $;

datalines;

1 a

2 b

4 d

;
run;
data two;

input X B $;

datalines;

2 x

3 y

4 v

;
run;
proc sql;
   create table work.merge as
   select *
   from one
   full join
   two
   on one.x=two.x;
run;
proc print data=merge;
   title "merge";
run;
A variable name MUST be unique in any sas table/dataset in any time. This is nothing to do with SQL.

When you ask to create a table in sql with same name for two variables, it issues a warning. But if you just have no  create table statement, then there is no problem. In this case, no table is created.

You can select the same variable many times in a select statement. In this case, it is like a 'proc print'.

Add feedback option to see what the standard sql codes are.

data one;
input X A $;
datalines;
1 a
2 b
4 d
;

proc sql feedback;
  select x , a, x, 1
  from one
  ;
  create table two as
  select x , a, x
  from one
  ;
  create table two as
  select x , a, 1
  from one
  ;
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-3-7 22:17:01
bobguy 发表于 2010-3-7 22:14
dolphinfish 发表于 2010-3-7 21:20
以下这个程序,按照SAS document应该是打印出四个column的:X, A, X, B. 但实际中只有3个:X, A, B.

Log 中error message:
515  on one.x=two.x;
WARNING: Variable X already exists on file WORK.MERGE.

我如果把第二个X改叫Y后就没事了。打印X, A, Y, B.  


这个程序如果换成outer union的话,也是一样的结果。看来我的SAS不接受一个table中同时存在两个X column.  但不知道为什么书上会给出XAXB形式的答案。

难道是有些版本的SAS开始不允许重名的Variable了?请问有没有人有相关经验。PDV允许有两个X存在么?谢谢!

--------------------------------------------
data one;

input X A $;

datalines;

1 a

2 b

4 d

;
run;
data two;

input X B $;

datalines;

2 x

3 y

4 v

;
run;
proc sql;
   create table work.merge as
   select *
   from one
   full join
   two
   on one.x=two.x;
run;
proc print data=merge;
   title "merge";
run;
A variable name MUST be unique in any sas table/dataset in any time. This is nothing to do with SQL.

When you ask to create a table in sql with same name for two variables, it issues a warning. But if you just have no  create table statement, then there is no problem. In this case, no table is created.

You can select the same variable many times in a select statement. In this case, it is like a 'proc print'.

Add feedback option to see what the standard sql codes are. I simplify your problem by taking away irrelevant codes below.

data one;
input X A $;
datalines;
1 a
2 b
4 d
;

proc sql feedback;
  select x , a, x, 1
  from one
  ;
  create table two as
  select x , a, x
  from one
  ;
  create table two as
  select x , a, 1
  from one
  ;
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-3-8 08:39:20
谢谢bobguy。原来是create table惹的祸。=)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群