全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1918 7
2013-06-28
问题如下:表a
             ID   DATE1          DATE2         DATE3……
             1   20120305     20120508
             2   20090807    20090808
                 表b
             ID   DATE               PRICE
             1     20120305       3.6
             1     20120508       5.6
             2    20090807        8.9
             2    20090808        7.3
           ……
目的:使得a表中的每一个ID和日期都能在b表中找到与之相匹配的price,如:ID   DATE1  DATE2  PRICE1  PRICE2

    谢谢大神了!!
二维码

扫码加我 拉你入群

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

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

全部回复
2013-6-28 10:41:14
是不是这样.
复制代码
二维码

扫码加我 拉你入群

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

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

2013-6-28 11:44:46
data a;
input  ID $  DATE1 yymmdd10.  DATE2 yymmdd10.  DATE3  yymmdd10.;
   format ID 1.;
   format date1 date2 date3 yymmdd10.;
datalines;
1   20120305 20120508 20120509
2   20090807 20090808 20090809
3   20090807 20090808 20090809
; run;

data b;
    input ID $  DATE yymmdd10. PRICE;
    format ID $1.;
    format date yymmdd10.;
datalines;
1  20120305 3.6
1  20120508 5.6
1  20120509 5.88
2  20090807 8.9
2  20090808 7.3
2  20090809 7.66
3  20090807 44.9
3  20090808 33.3
3  20090809 22.66
; run;

data _null_;
     set b;
         call symputx(catx("_","P",id,date),price);
run;

data wanted;
    set a;
        array d  date1-date3;
        array p  price1-price3;
        do i=1 to 3;
           p(i)=symget(catx("_","P",id,d(i)));
        end;
        drop i;
run;

   
二维码

扫码加我 拉你入群

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

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

2013-6-28 14:12:35
yongyitian 发表于 2013-6-28 10:41
是不是这样.
    谢谢大神!
    我的问题还在于表b中有关于不同ID,很多日期的数据,也就是说不仅有ID1, 20120305     20120508两日的数据,所以需要从b表中先找;而且,表a的date列有很多,考虑过用left join 分别去和表b匹配,但a表的date列有很多,所以想请教有没有其他的办法~再次谢过!
二维码

扫码加我 拉你入群

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

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

2013-6-28 14:13:04
pobel 发表于 2013-6-28 11:44
data a;
input  ID $  DATE1 yymmdd10.  DATE2 yymmdd10.  DATE3  yymmdd10.;
   format ID 1.;
谢谢大神!
    我的问题还在于表b中有关于不同ID,很多日期的数据,也就是说不仅有ID1, 20120305     20120508两日的数据,所以需要从b表中先找;而且,表a的date列有很多,考虑过用left join 分别去和表b匹配,但a表的date列有很多,所以想请教有没有其他的办法~再次谢过!
二维码

扫码加我 拉你入群

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

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

2013-6-29 00:29:30
1234nu 发表于 2013-6-28 14:12
谢谢大神!
    我的问题还在于表b中有关于不同ID,很多日期的数据,也就是说不仅有ID1, 20120305    ...
前面方法的思路是将数据集 b 转换成数据集 a 的格式然后合并. 如果date变量多的话,可一将其它 date 加入 第33, 36, 40 行。
或者将 date1, date2 改成 date1-daten.
还可以将第 41 行去掉,看看结果如何.

另外, 可以将数据集 a 转换成数据集 b 的格式,然后合并,transpose,最后去掉不必要的行。 如下。
复制代码
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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