楼主: littlellx
5180 16

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

  • 1关注
  • 2粉丝

硕士生

36%

还不是VIP/贵宾

-

威望
0
论坛币
1169 个
通用积分
2.4023
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
2696 点
帖子
89
精华
0
在线时间
184 小时
注册时间
2006-7-2
最后登录
2024-5-18

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问SAS大牛们     我有两个数据集 A和B    A中有变量x 和year;B中有变量y和year;   如何写命令  当A中的x=B中y   并且,年份相同时  生成新的数据集C??   谢谢大家   
二维码

扫码加我 拉你入群

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

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

关键词:数据集 观测值 year ear 如何写 如何

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  符号不可识别    还有*  也不可识别

使用道具

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   查看全部评分

使用道具

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各变量   所以   这个办法  感觉不大行呢

使用道具

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   查看全部评分

使用道具

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

使用道具

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

使用道具

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 语句”所用时间(总处理时间):
  怎么就是匹配不出来啊   

使用道具

10
littlellx 发表于 2015-3-13 10:41:34 |只看作者 |坛友微信交流群
sushe1527 发表于 2015-3-13 10:20
改名字啊,一个叫year 一个叫year1 即可
我会错意了

使用道具

9
sushe1527 发表于 2015-3-13 10:40:45 |只看作者 |坛友微信交流群
是列方面有重复,不是行,行的那叫观测,咧的叫变量
data A                                                              dataB
year           year                                                 year        y     
2000          2                                                      2000      2
2001           2                                                     2000       2
2000           3                                                     2000       2
2000            4                                                     2001      3
2001            4                                                     2000      4

比方data a 是year 和year  并不是 year和x

使用道具

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

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

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

GMT+8, 2024-5-21 14:13