楼主: redaring
6795 10

[原创博文] 请教高手:怎样将一个数据集的值赋到另一个数据集中 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
48 个
通用积分
0.0600
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
4910 点
帖子
102
精华
0
在线时间
123 小时
注册时间
2009-11-22
最后登录
2018-2-15

楼主
redaring 发表于 2009-12-18 16:05:43 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
现在有两个数据集,数据集(1)同一个id有很多行不同的数据,每一个id的数据行数都不同,数据集(2)中每个id号只有一行数据。


数据集(1):
Id       x       y       z
111    61    70    55
111    50    33    26
132    56    78    36
132    90    84    56
132    59    43    78
253    44    96    86
145    99    40    73
145   100   69    77

数据集(2):
Id       aa      bb      cc
111   5.23   3.44   0.45
132   3.02   4.78   9.40
145   6.32   2.85   5.66

现在想在数据集(1)中插入3列,当数据集(2)的id和(1)中的id相同时,就给(1)中的同一id的每行数据都赋上(2)中3个变量的值,生成数据集(3)。
注:由于数据量非常大,所以并不知道数据集(1)中每个id实际有多少行。另外,(1)和(2)中的id并不是完全相等,有些(2)中有的,可能(1)中没有,也有可能是反过来的情况。

数据集(3):
Id         aa      bb      cc     x      y      z
111   5.23   3.44   0.45   61   70   55
111   5.23   3.44   0.45   50   33   26
132   3.02   4.78   9.40   56   78   36
132   3.02   4.78   9.40   90   84   56
132   3.02   4.78   9.40   59   43   78
253                                 44   96   86
145   6.32   2.85   5.66   99   40   73
145   6.32   2.85   5.66   10   69   77

我是新手,很多不懂,希望各位大侠帮帮忙,谢谢了!
二维码

扫码加我 拉你入群

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

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

关键词:请教高手 数据集 各位大侠 不知道

回帖推荐

bobguy 发表于5楼  查看完整内容

1# redaring Here is a simple one sql. Note there is no guarantee of ordering of SQL return values without an 'order by'. Hope this helps. data a; input Id x y z; cards; 111 61 70 55 111 50 33 26 132 56 78 36 132 90 84 56 132 59 43 78 253 44 96 86 145 99 40 73 145 100 69 77 ; data b; in ...

xiaosanmao 发表于4楼  查看完整内容

data a; input Id x y z;n=_n_; cards; 111 61 70 55 111 50 33 26 132 56 78 36 132 90 84 56 132 59 43 78 253 44 96 86 145 99 40 73 145 100 69 77 ;run; data b; input Id aa bb cc; cards; 111 5.23 3.44 0.45 132 3.02 4.78 9.40 145 6.32 2.85 5.66 ;run; proc sql nopri ...

本帖被以下文库推荐

沙发
peijiamei 发表于 2009-12-18 16:19:51
用stata可以试试,
joinby  id using shujuji2

藤椅
redaring 发表于 2009-12-18 16:49:50
谢谢版主建议!
不过我数据有上亿条,我不知道stata是否可以装下,另外就是,我也不会用stata,sas都是刚刚开始学的……不知道sas是否有命令可以实现我想要的结果?

板凳
xiaosanmao 发表于 2009-12-18 18:29:22
data a;
input Id       x       y       z;n=_n_;
cards;
111    61    70    55
111    50    33    26
132    56    78    36
132    90    84    56
132    59    43    78
253    44    96    86
145    99    40    73
145   100   69    77
;run;
data b;
input Id       aa      bb      cc;
cards;
111   5.23   3.44   0.45
132   3.02   4.78   9.40
145   6.32   2.85   5.66
;run;
proc sql noprint;create table tmp as
select * from A left join B on A.ID = b.ID order n;
create table final as select id,aa,bb,cc,x,y,z from tmp;
quit;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

报纸
bobguy 发表于 2009-12-19 12:57:08
1# redaring

Here is a simple one sql. Note there is no guarantee of ordering of SQL return values without an 'order by'.

Hope this helps.

data a;
input Id       x       y       z;
cards;
111    61    70    55
111    50    33    26
132    56    78    36
132    90    84    56
132    59    43    78
253    44    96    86
145    99    40    73
145   100   69    77
;

data b;
input Id       aa      bb      cc;
cards;
111   5.23   3.44   0.45
132   3.02   4.78   9.40
145   6.32   2.85   5.66
;

proc sql;
create table tmp as
select coalesce(a.Id, b.Id) as Id,  b.aa,  b.bb,  b.cc, a.x,  a.y, a.z
from  b as b
full join A as a  on A.ID = b.ID
;
quit;

proc  print data=tmp; run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

地板
haikuoxinkong 发表于 2009-12-19 13:35:01
学习学习 都很实用  有时间自己在揣摩一下
sas

7
redaring 发表于 2009-12-24 15:16:07
非常感谢楼上两位的帮忙,问题顺利的解决了!

8
爱萌 发表于 2009-12-24 17:27:38
我坚信SAS可以处理其他软件处理的一切,呵呵4楼和5楼很不错
最恨对我说谎或欺骗我的人

9
renda_shitou 发表于 2009-12-24 21:15:36
是个数据并接到问题
data a;
input Id       x       y       z;
cards;
111    61    70    55
111    50    33    26
132    56    78    36
132    90    84    56
132    59    43    78
253    44    96    86
145    99    40    73
145   100   69    77
;
proc sort;by Id;run;

data b;
input Id       aa      bb      cc;
cards;
111   5.23   3.44   0.45
132   3.02   4.78   9.40
145   6.32   2.85   5.66
;
proc sort;by Id;run;
data c;
merge b a;
by Id;
proc print;run;

10
gaohualong 发表于 2009-12-24 23:06:05
在论坛搜一下朱世武的书,里面对这部分有讲可以参考。呵呵,授之以鱼,不如授之以渔。

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

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