楼主: lnlhckao123
3067 25

[问答] 200论坛币求请问怎样在特定位置插入一个变量 [推广有奖]

  • 0关注
  • 3粉丝

副教授

61%

还不是VIP/贵宾

-

威望
0
论坛币
14832 个
通用积分
9.1001
学术水平
7 点
热心指数
4 点
信用等级
4 点
经验
12566 点
帖子
754
精华
0
在线时间
399 小时
注册时间
2010-8-21
最后登录
2024-2-8

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 ...
关键词:200论坛币 0论坛币 论坛币 proc sql Create
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
yongyitian + 1 + 1 + 1 Good Question

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

本帖被以下文库推荐

即使在人大经济论坛这个网络世界,我仍以真诚为基础与我的好友进行交往!
沙发
farmman60 发表于 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;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
lnlhckao123 + 3 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 3  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

藤椅
rdwalk 发表于 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里操作一下。
希望能帮当你。

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
lnlhckao123 + 2 + 2 + 2 热心帮助其他会员

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

使用道具

板凳
lnlhckao123 发表于 2013-5-3 23:00:53 |只看作者 |坛友微信交流群
谢谢rdwalk!我知道在excel里,上述目的很容易实现,但如果用excel实现,会出现在excel与sas之间转换,比较麻烦,所以我还是想用sas程序可以在任一位置放上一个新变量!这样会更有效率!
即使在人大经济论坛这个网络世界,我仍以真诚为基础与我的好友进行交往!

使用道具

报纸
rdwalk 发表于 2013-5-3 23:04:31 |只看作者 |坛友微信交流群
lnlhckao123 发表于 2013-5-3 23:00
谢谢rdwalk!我知道在excel里,上述目的很容易实现,我还是想用sas程序可以在任一位置放上一个新变量!!
期待高手

使用道具

地板
yongyitian 发表于 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;

使用道具

7
rdwalk 发表于 2013-5-3 23:17:56 |只看作者 |坛友微信交流群
yongyitian 发表于 2013-5-3 23:13
好象没有简单的办法,在select 后面必须例出所有变量,同时可以排续。 新加的变量如果不在aaa里,须要是通过 ...
能不能在任一行插入观测?能的话可以先转置。

使用道具

8
wodematlab 发表于 2013-5-3 23:22:25 |只看作者 |坛友微信交流群
用retain

使用道具

9
yongyitian 发表于 2013-5-3 23:24:00 |只看作者 |坛友微信交流群
不知道用sql怎么做,datastep里, 可以 用 if _n_=a_number then do;
                     new_obs=1; end;

使用道具

10
lnlhckao123 发表于 2013-5-3 23:27:23 |只看作者 |坛友微信交流群
谢谢yongyitian!我试一下!!
即使在人大经济论坛这个网络世界,我仍以真诚为基础与我的好友进行交往!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 04:27