楼主: pingguzh
2096 8

请教2个数据集查询和排序的问题 [推广有奖]

  • 0关注
  • 4粉丝

菜鸟

副教授

48%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
20.1546
学术水平
1 点
热心指数
7 点
信用等级
3 点
经验
20017 点
帖子
870
精华
0
在线时间
433 小时
注册时间
2012-10-29
最后登录
2024-1-28

楼主
pingguzh 发表于 2012-11-29 11:27:20 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家好,请教2个数据集查询和排序的问题
我这里有2个数据集data a和b,b数据集的变量名数多于a数据集。
比如a数据集的第一行,FR FT FQ AA BB这3个值是这样次序排列的。
但是在b数据集中,先是出现的FT,再出现的FR,最后出现的AA、FQ、BB,即b数据集里面这排列顺序为FT FR  AA FQ BB
现在想得到一个新的数据集c,保留id号以及FT FR AA FQ BB这些值
例如,数据集c的第一行为1 FT FR AA FQ BB
第二行为2 FO CC FP FI DD
请教各位sas程序应该如何编写?
我能想到的程序,是用proc sql去数据集b中,查找数据集a中的数值,但是好像不行,proc sql好像只能查阅两个数据集的变量是否一致,不能查阅数值,请高手指教,是否会用到proc transpose或者call sortc呢?谢谢

data a;
input id var1$ var2$ var3$ var4$ var5$@@;
cards;
1 FR FT FQ AA BB
2 FP FO FI CC DD
3 FL FK FW EE FF
;
data b;
input id var1$ var2$ var3$ var4$  var5$ var6$ var7$@@;
cards;
1 FT FL FR FK AA FQ BB
2 FO CC FP FJ FH FI DD
3 FM FH EE FW FK FL FF
;
run;

二维码

扫码加我 拉你入群

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

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

关键词:数据集 Transpose proc sql cards Input 如何

回帖推荐

ziyenano 发表于2楼  查看完整内容

data a; input id var1$ var2$ var3$ var4$ var5$@@; cards; 1 FR FT FQ AA BB 2 FP FO FI CC DD 3 FL FK FW EE FF ; data b; input id var1$ var2$ var3$ var4$ var5$ var6$ var7$@@; cards; 1 FT FL FR FK AA FQ BB 2 FO CC FP FJ FH FI DD 3 FM FH EE FW FK FL FF ; run; proc transpose data=a out=a1; by id; var var1--var5; proc transpose data=b out=b1; by id; var var1--var7; run; pro ...
统计爱好

沙发
ziyenano 发表于 2012-11-29 11:42:27
data a;
input id var1$ var2$ var3$ var4$ var5$@@;
cards;
1 FR FT FQ AA BB
2 FP FO FI CC DD
3 FL FK FW EE FF
;
data b;
input id var1$ var2$ var3$ var4$  var5$ var6$ var7$@@;
cards;
1 FT FL FR FK AA FQ BB
2 FO CC FP FJ FH FI DD
3 FM FH EE FW FK FL FF
;
run;


proc transpose data=a out=a1;
by id;
var var1--var5;
proc transpose data=b out=b1;
by id;
var var1--var7;
run;

proc sql;
create table c as
select b1.* from a1  inner join b1
on a1.id=b1.id and a1.col1=b1.col1;
quit;

proc transpose data=c out=c1(drop=_name_) prefix=var;
by id;
var col1;
run;
已有 1 人评分学术水平 收起 理由
pingguzh + 1 热心帮助其他会员

总评分: 学术水平 + 1   查看全部评分

藤椅
pingguzh 发表于 2012-11-29 12:44:17
谢谢,如果我用的是永久数据集,用libname将库命名为g
那么select g.b1.* from g.a1  inner join g.b1
on g.a1.id=g.b1.id and g.a1.col1=g.b1.col1;
请问能这么写吗?如果不行,应该怎么写呢,谢谢
统计爱好

板凳
ziyenano 发表于 2012-11-29 12:47:11
select b.* from g.a1 a  inner join g.b1 b
on a.id=b.id and a.col1=b.col1

报纸
pingguzh 发表于 2012-11-29 12:51:45
谢谢,你的意思是;
select b1.* from g.a1  inner join g.b1
on a.id=b.id and a.col1=b.col1
是这样吗?
统计爱好

地板
ziyenano 发表于 2012-11-29 12:54:08
不是
select b.* from g.a1 a  inner join g.b1 b
on a.id=b.id and a.col1=b.col1
这句sql中  a代表g.a1  b代表g.b1
已有 1 人评分学术水平 收起 理由
pingguzh + 1 热心帮助其他会员

总评分: 学术水平 + 1   查看全部评分

7
pingguzh 发表于 2012-11-29 12:59:30
谢谢您的悉心指导
统计爱好

8
Imasasor 发表于 2012-11-29 14:04:15
pingguzh 发表于 2012-11-29 12:59
谢谢您的悉心指导
他不知道帮了你多少忙呢
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

9
pingguzh 发表于 2012-11-29 14:42:03
是的啊,我也这么觉得的,所以很感激他
统计爱好

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 09:29