楼主: 烈女乖乖
2731 10

关于sql的一个程序,请高手们帮帮忙。 [推广有奖]

  • 0关注
  • 0粉丝

本科生

39%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
917 点
帖子
78
精华
0
在线时间
55 小时
注册时间
2010-6-23
最后登录
2013-5-25

楼主
烈女乖乖 发表于 2011-4-27 21:16:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
麻烦各位高手了!
是这样的

我有三列数据如下:

   code1   code2   x
      1             1       5
      3             2       7
      4             3       6
      6             4       9
      7             5      10
      9             6      12
                     7       11
                     8       12
                     9       13
                    10       11
......

是没有规律的,但是每一个code2是与一个x对应的,而code1是相当于一个code2的子集。
我的工作就是要把code1按照与code2相同的数转化为x的值,然后按照code1和转化后的变量做一张表。
就比如说,code1中的6对应的code2中的6然后就转化为x中的12。
麻烦各位高手了,因为数据非常庞大,所以我根本不能自己手动来做,
想到用SAS,但是我才刚刚入门,对这个程序完全没有头绪!

麻烦各位高手了!!!


谢谢谢谢
万分感谢!
二维码

扫码加我 拉你入群

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

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

关键词:关于SQL sql code 万分感谢 ODE 程序 sql

回帖推荐

本帖被以下文库推荐

沙发
baoaibaobao 发表于 2011-4-27 22:02:14
  1. data have;
  2. input code1   code2   x;
  3. cards;
  4. 1 1 5
  5. 3 2 7
  6. 4 3 6
  7. 6 4 9
  8. 7 5 10
  9. 9 6 12
  10. . 7 11
  11. . 8 12
  12. . 9 13
  13. . 10 11
  14. ;

  15. proc sql;
  16. create table want as
  17.         select code2 as code1,x from have where code2 in(
  18.                 select code2 from have
  19.                         intersect
  20.                 select code1 from have);
  21. quit;
  22.        
复制代码
已有 1 人评分经验 热心指数 收起 理由
crackman + 60 + 1 鼓励积极发帖讨论

总评分: 经验 + 60  热心指数 + 1   查看全部评分

藤椅
烈女乖乖 发表于 2011-4-27 22:50:59
谢谢你啊
我刚才试了,成功了
非常感谢!
谢谢谢谢哇

2# baoaibaobao

板凳
456852 发表于 2011-4-28 02:57:06
不一定要sql,data 也可以做:
data have;
input code1   code2   x;
cards;
1 1 5
3 2 7
4 3 6
6 4 9
7 5 10
9 6 12
. 7 11
. 8 12
. 9 13
. 10 11
;
data temp1;set have;keep code1;proc sort data=temp1;by code1;run;
data temp2;set have;keep code2 x;rename code2=code1;proc sort data=temp2;by code1;run;
data final;
merge temp1(in=a) temp2;
by code1;
if a;
if not missing(code1);
run;
已有 1 人评分经验 热心指数 收起 理由
crackman + 80 + 2 鼓励积极发帖讨论

总评分: 经验 + 80  热心指数 + 2   查看全部评分

报纸
xiaobai922 发表于 2011-4-28 15:35:21
data test;
input code1 code2 x@@;
cards;
1             1       5
      3             2       7
      4             3       6
      6             4       9
      7             5      10
      9             6      12
      .              7       11
      .              8       12
      .              9       13
      .             10       11
;
proc sql;
select a.code1,b.code2,b.x
from test a,test b
where a.code1=b.code2;
quit;

效果一样

地板
烈女乖乖 发表于 2011-4-28 17:06:54
非常感谢你!
多谢了

谢谢谢谢!~






4# 456852

7
烈女乖乖 发表于 2011-4-28 17:07:55
呵呵这种方式更加简便!

多谢了,,,万分感谢!~






5# xiaobai922

8
leedx 发表于 2011-5-2 17:52:38
同一道题,不同的解法,练习编程序的好材料~

9
lsyizls 在职认证  发表于 2011-5-11 17:55:22
format是个比较神奇的东西

data
test;
input code2 x;
cards;
1 5
2 7
3 6
4 9
5 10
6 12
7 11
8 12
9 13
10 11
;
run;
data fmt(keep=start label fmtname hlo);
set test end=eof;
start=code2;
label=x;
fmtname=
'code';
output;
if eof then do;
start=
.;
label=
'na';
hlo=
'O';
output;
end;
run;
proc format cntlin=fmt;
run;
data lookup_table;
input code1;
match=put(code1,
code.);
datalines;
1
3
4
6
7
9
;
run;

10
sas_user 发表于 2011-5-12 00:19:42
data a;
input code1 code2 x;
datalines;
      1             1       5
      3             2       7
      4             3       6
      6             4       9
      7             5      10
      9             6      12
      .               7       11
      .               8       12
      .               9       13
      .              10       11
;
run;
proc sort data=a out=code1 (keep=code1); by code1; run;
proc sort data=a out=code2 (drop=code1); by code2; run;

data b;
        merge code1(in=a) code2(rename=(code2=code1) in=b);
        by code1;
        if a and b;
run;

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

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