全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3542 25
2013-05-03
悬赏 200 个论坛币 已解决
请问高手,我的数据如下aaa,现在我要在d 与e之间插入一个变量p,要怎样写sas程序?不能在程序中把aaa原先的所有变量全都列出来,如下proc sql 程序步,因为有可能原先变量很多,或者原先变量的名称复杂,谢谢高手指点!
proc sql;
  create table ccc as
  select a   b  c   d  p  e  f   g    h;
    from aaa;
run;



data aaa ;
input  a   b  c   d   e  f   g    h;
cards;
1     2     3     4     5     6     7     8

run;




最佳答案

farmman60 查看完整内容

Below program could be tried, but it is hard to say which is more efficient without test. data aaa; input a b c d e f g h; cards; 1 2 3 4 5 6 7 8 ; run; data ddd; set aaa(obs=0 keep=a--d); p=.; set aaa(obs=0 keep=e--h); run; proc append base=ddd data=aaa force; run; If p from other dataset, try to this. data ddd; merge aaa (keep=a--d) ccc(keep=p) a ...
二维码

扫码加我 拉你入群

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

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

全部回复
2013-5-3 22:15:39
Below program could be tried, but it is hard to say which is more efficient  without test.

data aaa;
input  a   b  c   d   e  f   g    h;
cards;
1  2  3  4  5  6  7  8
;
run;

data ddd;
set aaa(obs=0 keep=a--d);
p=.;
set aaa(obs=0 keep=e--h);
run;

proc append base=ddd data=aaa force;
run;

If p from other dataset, try to this.

data ddd;
  merge aaa (keep=a--d) ccc(keep=p) aaa (keep=e--h);
  /*by var if has or wiithout*/
run;
二维码

扫码加我 拉你入群

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

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

2013-5-3 22:49:37
放在后面不行吗?这是放在后面的方法:
data join;
   set table1;
   set table2;
run;
table1是存储a   b  c   d   e  f   g    h的数据集,table2是存储p的数据集。
在分析过程中变量的顺序不太重要。当然了,如果变量名有规律的话,可以进行排序。要不你就在excel里操作一下。
希望能帮当你。

二维码

扫码加我 拉你入群

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

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

2013-5-3 23:00:53
谢谢rdwalk!我知道在excel里,上述目的很容易实现,但如果用excel实现,会出现在excel与sas之间转换,比较麻烦,所以我还是想用sas程序可以在任一位置放上一个新变量!这样会更有效率!
二维码

扫码加我 拉你入群

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

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

2013-5-3 23:04:31
lnlhckao123 发表于 2013-5-3 23:00
谢谢rdwalk!我知道在excel里,上述目的很容易实现,我还是想用sas程序可以在任一位置放上一个新变量!!
期待高手
二维码

扫码加我 拉你入群

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

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

2013-5-3 23:13:46
好象没有简单的办法,在select 后面必须例出所有变量,同时可以排续。 新加的变量如果不在aaa里,须要是通过计算得到的, 如sum(a), 或者是一个常数,如下面的 pp。 如果p是在另一个表中, 就要用join 来把两个表合并在一起.

另外, select后面的变量要用,分开,最后不加;


data aaa;
input a b c d e f g h;
cards;
1 2 3 4 5 6 7 8
;
proc sql;
    create table ccc as
        select a, b,c,d, sum(a) as p, 1 as pp, e, f, g, h
        from aaa;
quit;
proc print data=ccc; run;
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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