楼主: applebobysps
2673 13

[原创博文] 问一个SAS的data合并问题,一个data引用另一个data里面的数值 [推广有奖]

  • 6关注
  • 0粉丝

本科生

17%

还不是VIP/贵宾

-

威望
0
论坛币
56 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1031 点
帖子
67
精华
0
在线时间
65 小时
注册时间
2011-5-19
最后登录
2018-10-25

楼主
applebobysps 发表于 2012-8-22 16:05:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
求解。。问题如下:有两个data  aa,   bb;   
data aa;
input m;
cards;
16
643
65
863
345
56
3
5
77
45
257
45
;
RUN;
DATA BB;
input P1 P2 P3;
CARDS;
44  200  500
;
RUN;
如何在data  aa;中增加一列p;
使得如果P<44(bb中的第一个数,这个数是不确定的,不要直接写44) then  p=1;
   44<=p<200  then p=2;
  p>=200 then p=3;
这个能实现么? 希望code简单些 。。谢谢啦。。。
二维码

扫码加我 拉你入群

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

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

关键词:Data sas的 Input cards card 如何

本帖被以下文库推荐

沙发
applebobysps 发表于 2012-8-22 16:28:43

藤椅
hopewell 发表于 2012-8-22 16:58:15
  1. data cc(drop=p1-p3);
  2.     set aa;
  3.     if _n_=1 then set bb;
  4.     if m<p1 then p=1;
  5.     else if p1<=m<p2 then p=2;
  6.     else if m>=p2 then p=3;
  7. run;
复制代码
观钓颇逾垂钓趣 种花何问看花谁

板凳
盼盼刘 在职认证  发表于 2012-8-22 17:09:25
你BB中就各个观测么,如果就一个观测,用if的判定有什么意义

报纸
盼盼刘 在职认证  发表于 2012-8-22 17:14:01
可以把你想要的结果大体呈现出来一下,

地板
盼盼刘 在职认证  发表于 2012-8-22 17:16:05
我不是很明白,因为p是你想要增加的列,还没有数值呢,你怎么判断他是不是小于44(我知道他是变动的),
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Alen517 + 1 + 1 + 1 热心帮助其他会员

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

7
bobguy 发表于 2012-8-23 07:16:18
Hope this is what you want.

data aa;
input m;
cards;
16
643
65
863
345
56
3
5
77
45
257
45
;
RUN;
DATA BB;
input P1 P2 P3;
CARDS;
44  200  500
;
RUN;

data aa_1;
   if _N_=1 then set bb;
   set aa;
   if m<p1 then p=1;
   else if m<=p2 then p=2;
   else p=3;
run;

proc print;run;

8
webgu 发表于 2012-8-23 08:02:15
  1. /*solution 1*/
  2. data cc(drop=p1 p2);
  3. set aa;
  4. if _n_=1 then set bb(keep=p1 p2) ;
  5.       if m<p1 then p=1;
  6. else if m<p2 then p=2;
  7. else p=3;
  8. run;

  9. /*solution 2*/
  10. data _null_;
  11.   set bb;
  12.   call symputx('p1',p1,G);
  13.   call symputx('p2',p2,G);
  14.   run;

  15. data dd;
  16.   set aa;
  17.        if m<&p1 then p=1;
  18. else if m<&p2 then p=2;
  19. else p=3;
  20. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Alen517 + 1 + 1 + 1 分析的有道理

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

SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

9
applebobysps 发表于 2012-8-23 09:24:53
webgu 发表于 2012-8-23 08:02
非常感谢。。。。这两种方法都成功了。。能请较以下 data _null_;这一步创建的数据集是什么意义呢?是宏么?在work里面是不显示出来么?

10
applebobysps 发表于 2012-8-23 09:25:56
bobguy 发表于 2012-8-23 07:16
Hope this is what you want.

data aa;
非常感谢。。。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 06:43