楼主: littlellx
5152 16

如何有条件地选取两个数据集中的一些观测值生成新的数据集? [推广有奖]

11
littlellx 发表于 2015-3-13 12:17:50 |只看作者 |坛友微信交流群
sushe1527 发表于 2015-3-13 10:40
是列方面有重复,不是行,行的那叫观测,咧的叫变量
data A                                             ...
sushe  仔细查看过了   列向量没有相同的year   我猜是不是  合并之后  就有两列year  变量了  所以提示重复
我把B中的year   修改为year1后;重新试   仍然不行  
proc sort data=tmp1.A;by year;run;
proc sort data=tmp1.B;by year1;run;
data tmp1.m061;
merge tmp1.A(in=A) tmp1.B(in=B);
by year year1;if A and B and X=Y;
run;
ERROR: BY 变量 year1 不在输入数据集 TMP1.A 中。
ERROR: BY 变量 year 不在输入数据集 TMP1.B 中。
NOTE: 由于出错,SAS 系统停止处理该步。
WARNING: 数据集 TMP1.M061 可能不完整。该步停止时,共有 0 个观测和 254 个变量。

后来又修改为:
proc sort data=tmp1.A;by year;run;
proc sort data=tmp1.B;by year1;run;
data tmp1.m061;
merge tmp1.A(in=A) tmp1.B(in=B);
if A and B and X=Y;
run;
结果:

NOTE: 从数据集 TMP1.A 读取了 2889918 个观测
NOTE: 从数据集 TMP1.B 读取了 22796309 个观测
NOTE: 数据集 TMP1.M061 有 0 个观测和 254 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
  怎么就是匹配不出来啊   

使用道具

12
sushe1527 发表于 2015-3-13 13:09:17 |只看作者 |坛友微信交流群
我意思是,A里面有两个相同的year你看看有没有重名的,类似 year x m year

使用道具

13
littlellx 发表于 2015-3-13 19:53:44 |只看作者 |坛友微信交流群
sushe1527 发表于 2015-3-13 13:09
我意思是,A里面有两个相同的year你看看有没有重名的,类似 year x m year
没有重名的  真的没有   

使用道具

14
jl60156 发表于 2015-3-13 21:11:06 |只看作者 |坛友微信交流群
proc sql;
        create table c as
                select  a.year, a.x, b.y
                from a as a inner join
                                b as b
        on a.year=b.year and a.x=b.y;       
quit;

you could select more variables you are interested in from a an b
已有 1 人评分论坛币 收起 理由
admin_kefu + 40 热心帮助其他会员

总评分: 论坛币 + 40   查看全部评分

使用道具

15
littlellx 发表于 2015-3-13 21:26:05 |只看作者 |坛友微信交流群
jl60156 发表于 2015-3-13 21:11
proc sql;
        create table c as
                select  a.year, a.x, b.y
一共有254各变量   所以   这个办法  感觉不大行呢

使用道具

16
jl60156 发表于 2015-3-13 21:43:39 |只看作者 |坛友微信交流群
littlellx 发表于 2015-3-13 21:26
一共有254各变量   所以   这个办法  感觉不大行呢
proc sql;
        create table c as
                select  a.*, b.*
                from a as a inner join
                                b(rename=(year=yearb)) as b
        on a.year=b.yearb and a.x=b.y;       
quit;

if there are more variables with same names in both a and b you can rename them in b or a
已有 1 人评分论坛币 收起 理由
admin_kefu + 30 热心帮助其他会员

总评分: 论坛币 + 30   查看全部评分

使用道具

17
littlellx 发表于 2015-3-17 18:05:39 |只看作者 |坛友微信交流群
jl60156 发表于 2015-3-13 21:43
proc sql;
        create table c as
                select  a.*, b.*
对SAS真是外行   依照您的命令输入后  怎么提示  on  符号不可识别    还有*  也不可识别

使用道具

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

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

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

GMT+8, 2024-5-1 02:25